blob: 508e097240e50d969fbc786fff4791cabfa34775 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Mia-Software.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Nicolas Bros (Mia-Software) - initial API and implementation
*******************************************************************************/
package org.eclipse.gmt.modisco.infra.browser.uicore;
import java.util.Collections;
import java.util.List;
import org.eclipse.gmt.modisco.infra.browser.custom.MetamodelView;
import org.eclipse.gmt.modisco.infra.browser.custom.core.CustomizationsCatalog;
import org.eclipse.gmt.modisco.infra.browser.uicore.internal.AppearanceConfiguration;
import org.eclipse.gmt.modisco.infra.browser.uicore.internal.CustomTreePainter;
import org.eclipse.gmt.modisco.infra.browser.uicore.internal.customization.CustomizationEngine;
import org.eclipse.gmt.modisco.infra.browser.uicore.internal.model.ItemsFactory;
import org.eclipse.gmt.modisco.infra.facet.Facet;
import org.eclipse.gmt.modisco.infra.facet.core.FacetContext;
import org.eclipse.gmt.modisco.infra.facet.core.FacetSetCatalog;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Tree;
/**
* This is a facade to the {@link CustomizationEngine}, {@link AppearanceConfiguration}, and
* {@link FacetContext}. An instance of this class must be passed to
* {@link CustomizableModelContentProvider} and {@link CustomizableModelLabelProvider}.
* <p>
* Note that you must call {@link CustomizationManager#installCustomPainter(Tree)
* installCustomPainter} for all customizations to be displayed properly.
* @deprecated Will be replaced by EMF Facet,
* cf https://bugs.eclipse.org/bugs/show_bug.cgi?id=470715
*/
@Deprecated
public class CustomizationManager {
private final AppearanceConfiguration appearanceConfiguration;
public CustomizationManager() {
this.appearanceConfiguration = new AppearanceConfiguration(new ItemsFactory());
}
/**
* Install a {@link CustomTreePainter} on the given {@link Tree}.
* <p>
* This custom painter is necessary to display some customizations, like underlined,
* struckthrough, and Facet overlay icons.
*/
public void installCustomPainter(final Tree tree) {
@SuppressWarnings("unused")
CustomTreePainter customTreePainter = new CustomTreePainter(tree,
this.appearanceConfiguration);
}
/**
* Adds the given customization to the engine. Once all customizations are added,
* {@link CustomizationManager#loadCustomizations() loadCustomizations} must be called to
* effectively load the registered customizations.
* <p>
* Customizations should be retrieved from the {@link CustomizationsCatalog}.
*
* @param customization
* a customization root object, defined from metamodel
* "http://www.eclipse.org/MoDisco/infra/browser/custom/0.8".
*/
public void registerCustomization(final MetamodelView customization) {
this.appearanceConfiguration.getCustomizationEngine().registerCustomization(customization);
}
// /**
// * Adds the customization defined in the given file to the engine. Once
// all
// * customizations are added,
// * {@link CustomizationManager#loadCustomizations() loadCustomizations}
// must
// * be called to effectively load the registered customizations.
// *
// * @param customizationFile
// * a file with the "uiCustom" extension, that contains a
// * customization that follows the metamodel
// * "http://www.eclipse.org/MoDisco/infra/browser/custom/0.8".
// */
// public void registerCustomization(final IFile customizationFile) throws
// IOException {
// final ResourceSet resourceSet = new ResourceSetImpl();
// resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(
// CustomizationsCatalog.FILE_EXTENSION, new XMIResourceFactoryImpl());
// final URI uri =
// URI.createURI(customizationFile.getLocationURI().toString());
// final Resource resource = resourceSet.createResource(uri);
// resource.load(null);
// final MetamodelView metamodelView = (MetamodelView)
// resource.getContents().get(0);
// registerCustomization(metamodelView);
// }
/**
* Loads or reloads the customizations registered by
* {@link CustomizationManager#registerCustomization(MetamodelView) registerCustomization}.
* <p>
* <strong>note:</strong> this method should be called after all {@link Facet}s are loaded,
* because customizations can reference {@link Facet}s.
*/
public void loadCustomizations() {
this.appearanceConfiguration.getCustomizationEngine().loadCustomizations();
}
/** Removes all customizations */
public void clearCustomizations() {
this.appearanceConfiguration.getCustomizationEngine().clear();
}
/** Get registered customizations */
public List<MetamodelView> getRegisteredCustomizations() {
return Collections.unmodifiableList(this.appearanceConfiguration.getCustomizationEngine()
.getRegisteredCustomizations());
}
/**
* Loads the given Facet.
* <p>
* Facets should be retrieved from the {@link FacetSetCatalog}.
*/
public void loadFacet(final Facet facet) {
this.appearanceConfiguration.loadFacet(facet);
}
/** Removes all Facets */
public void clearFacets() {
this.appearanceConfiguration.clearFacets();
}
// package-private
AppearanceConfiguration getAppearanceConfiguration() {
return this.appearanceConfiguration;
}
public boolean isShowEmptyLinks() {
return this.appearanceConfiguration.isShowEmptyLinks();
}
public void setShowEmptyLinks(final boolean showEmptyLinks) {
this.appearanceConfiguration.setShowEmptyLinks(showEmptyLinks);
}
public boolean isSortInstances() {
return this.appearanceConfiguration.isSortInstances();
}
public void setSortInstances(final boolean sortInstances) {
this.appearanceConfiguration.setSortInstances(sortInstances);
}
public boolean isShowDerivedLinks() {
return this.appearanceConfiguration.isShowDerivedLinks();
}
public void setShowDerivedLinks(final boolean showDerivedLinks) {
this.appearanceConfiguration.setShowDerivedLinks(showDerivedLinks);
}
public boolean isShowFullQualifiedNames() {
return this.appearanceConfiguration.isShowFullQualifiedNames();
}
public void setShowFullQualifiedNames(final boolean showFullQualifiedNames) {
this.appearanceConfiguration.setShowFullQualifiedNames(showFullQualifiedNames);
}
public boolean isShowMultiplicity() {
return this.appearanceConfiguration.isShowMultiplicity();
}
public void setShowMultiplicity(final boolean showMultiplicity) {
this.appearanceConfiguration.setShowMultiplicity(showMultiplicity);
}
public boolean isShowOppositeLinks() {
return this.appearanceConfiguration.isShowOppositeLinks();
}
public void setShowOppositeLinks(final boolean showOppositeLinks) {
this.appearanceConfiguration.setShowOppositeLinks(showOppositeLinks);
}
public boolean isShowContainer() {
return this.appearanceConfiguration.isShowContainer();
}
public void setShowContainer(final boolean showContainer) {
this.appearanceConfiguration.setShowContainer(showContainer);
}
public boolean isSortLinks() {
return this.appearanceConfiguration.isSortLinks();
}
public void setSortLinks(final boolean value) {
this.appearanceConfiguration.setSortLinks(value);
}
public void setSortLinksByType(final boolean value) {
this.appearanceConfiguration.setSortLinksByType(value);
}
public boolean isSortLinksByType() {
return this.appearanceConfiguration.isSortLinksByType();
}
public void setShowAttributes(final boolean value) {
this.appearanceConfiguration.setShowAttributes(value);
}
public boolean isShowAttributes() {
return this.appearanceConfiguration.isShowAttributes();
}
public void setShowEmptyAttributes(final boolean value) {
this.appearanceConfiguration.setShowEmptyAttributes(value);
}
public boolean isShowEmptyAttributes() {
return this.appearanceConfiguration.isShowEmptyAttributes();
}
public void setShowOrdering(final boolean value) {
this.appearanceConfiguration.setShowOrdering(value);
}
public boolean isShowOrdering() {
return this.appearanceConfiguration.isShowOrdering();
}
public void setShowTypeOfLinks(final boolean value) {
this.appearanceConfiguration.setShowTypeOfLinks(value);
}
public boolean isShowTypeOfLinks() {
return this.appearanceConfiguration.isShowTypeOfLinks();
}
public void setShowElementIDs(final boolean showElementIDs) {
this.appearanceConfiguration.setShowElementIDs(showElementIDs);
}
public boolean isShowElementIDs() {
return this.appearanceConfiguration.isShowElementIDs();
}
public void setShowURI(final boolean showURI) {
this.appearanceConfiguration.setShowURI(showURI);
}
public boolean isShowURI() {
return this.appearanceConfiguration.isShowURI();
}
public void setFontSizeDelta(final int value) {
this.appearanceConfiguration.setFontSizeDelta(value);
}
public int getFontSizeDelta() {
return this.appearanceConfiguration.getFontSizeDelta();
}
public void setCustomFont(final Font customFont) {
this.appearanceConfiguration.setCustomFont(customFont);
}
public Font getCustomFont() {
return this.appearanceConfiguration.getCustomFont();
}
public void setCustomItalicFont(final Font customItalicFont) {
this.appearanceConfiguration.setCustomItalicFont(customItalicFont);
}
public Font getCustomItalicFont() {
return this.appearanceConfiguration.getCustomItalicFont();
}
}