blob: c9047c77d2b800356bcce54633379dee5b3fac59 [file] [log] [blame]
/**
* Copyright (c) 2012, 2014 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:
* Gregoire Dupe (Mia-Software) - Bug 361794 - [Restructuring] New customization meta-model
* Gregoire Dupe (Mia-Software) - Bug 369987 - [Restructuring][Table] Switch to the new customization and facet framework
* Vincent Lorenzo (CEA-LIST) - Bug 372644 - Create Customizable tooltips for the TreeViewer using a CustomizableLabelProvider
* Gregoire Dupe (Mia-Software) - Bug 372644 - Create Customizable tooltips for the TreeViewer using a CustomizableLabelProvider
* Gregoire Dupe (Mia-Software) - Bug 373078 - API Cleaning
* Nicolas Bros (Mia-Software) - Bug 377866 - selection customization
* David Couvrand (Soft-Maint) - Bug 422058 - Implementation of strikethrough and underline in the CustomizedLabelProvider
* Gregoire Dupe (Mia-Software) - Bug 441570 - Children custom property
* Gregoire Dupe (Mia-Software) - Bug 443682 - Access to the super facet
*/
package org.eclipse.modisco.facet.custom.ui.internal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.ETypedElement;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.modisco.facet.custom.core.ICustomizationManager;
import org.eclipse.modisco.facet.custom.ui.IContentPropertiesHandler;
import org.eclipse.modisco.facet.custom.ui.IFontPropertiesHandler;
import org.eclipse.modisco.facet.custom.ui.ISelectionPropertiesHandler;
import org.eclipse.modisco.facet.custom.ui.internal.exported.ILabelPropertiesHandler;
import org.eclipse.modisco.facet.efacet.core.FacetUtils;
import org.eclipse.modisco.facet.efacet.core.IFacetManager;
import org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.Facet;
import org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.FacetOperation;
import org.eclipse.modisco.facet.efacet.metamodel.v0_2_0.efacet.FacetSet;
public class PropertiesHandler implements IContentPropertiesHandler,
ILabelPropertiesHandler, ISelectionPropertiesHandler, IFontPropertiesHandler {
private static final String SEPARATOR = "::"; //$NON-NLS-1$
private static final String CUSTOM_PROPERTIES = "resources/customproperties.efacet"; //$NON-NLS-1$
private static final String CUSTOM = "CustomizedEObject"; //$NON-NLS-1$
private static final String TT_CUSTOM = "CustomizedToolTipEObject"; //$NON-NLS-1$
private static final String IMAGE = "image"; //$NON-NLS-1$
private static final String LABEL = "label"; //$NON-NLS-1$
private static final String BACKGROUND = "background"; //$NON-NLS-1$
private static final String FOREGROUND = "foreground"; //$NON-NLS-1$
private static final String FONT = "fontName"; //$NON-NLS-1$
private static final String FONT_SIZE = "fontSize"; //$NON-NLS-1$
private static final String IS_BOLD = "isBold"; //$NON-NLS-1$
private static final String IS_ITALIC = "isItalic"; //$NON-NLS-1$
private static final String IS_VISIBLE = "isVisible"; //$NON-NLS-1$
private static final String IS_UNDERLINED = "isUnderlined"; //$NON-NLS-1$
private static final String IS_STRUCKTHROUGH = "isStruckthrough"; //$NON-NLS-1$
private static final String TOP_L_OVERLAY = "topLeftOverlay"; //$NON-NLS-1$
private static final String TOP_M_OVERLAY = "topMiddleOverlay"; //$NON-NLS-1$
private static final String TOP_R_OVERLAY = "topRightOverlay"; //$NON-NLS-1$
private static final String BOTTOM_L_OVERLAY = "bottomLeftOverlay"; //$NON-NLS-1$
private static final String BOTTOM_M_OVERLAY = "bottomMiddleOverlay"; //$NON-NLS-1$
private static final String BOTTOM_R_OVERLAY = "bottomRightOverlay"; //$NON-NLS-1$
private static final String SELECTION = "selection"; //$NON-NLS-1$
private static final String CHILDREN = "children"; //$NON-NLS-1$
//for tooltips
private static final String TEXT = "text"; //$NON-NLS-1$
private static final String TIME_DISPLAYED = "timeDisplayed"; //$NON-NLS-1$
private static final String DISPLAY_DELAY = "displayDelayTime"; //$NON-NLS-1$
private static final String SHADOW = "shadow"; //$NON-NLS-1$
private static final String ALIGNMENT = "alignment"; //$NON-NLS-1$
private final Resource resource;
private final Map<String, FacetOperation> map = new HashMap<String, FacetOperation>();
/**
*
* @deprecated Must be replaced by
* org.eclipse.modisco.facet.custom.ui.internal.PropertiesHandler
* .PropertiesHandler(ICustomizationManager)
*/
@Deprecated
public PropertiesHandler(final ResourceSet resourceSet) {
final String bundleName = Activator.getDefault().getBundle().getSymbolicName();
URI propertiesUri = URI.createPlatformPluginURI(bundleName, true);
propertiesUri = propertiesUri
.appendSegments(PropertiesHandler.CUSTOM_PROPERTIES.split("/")); //$NON-NLS-1$
this.resource = resourceSet.getResource(propertiesUri, true);
}
public PropertiesHandler(final ICustomizationManager customizationMgr) {
final String bundleName = Activator.getDefault().getBundle().getSymbolicName();
URI propertiesUri = URI.createPlatformPluginURI(bundleName, true);
propertiesUri = propertiesUri
.appendSegments(PropertiesHandler.CUSTOM_PROPERTIES.split("/")); //$NON-NLS-1$
final ResourceSet resourceSet = customizationMgr.getResourceSet();
this.resource = resourceSet.getResource(propertiesUri, true);
final FacetSet facetSet = (FacetSet) this.resource.getContents().get(0);
final IFacetManager facetManager = customizationMgr.getFacetManager();
final List<FacetSet> facetSets = facetManager.getManagedFacetSets();
facetSets.add(facetSet);
}
private FacetOperation getPropertyByName(final String facetName,
final String propertyName) {
final String key = facetName + PropertiesHandler.SEPARATOR + propertyName;
FacetOperation result = this.map.get(key);
if (result == null) {
final FacetSet facetSet = (FacetSet) this.resource.getContents()
.get(0);
final Facet facet = FacetUtils.getFacet(
FacetUtils.getFacets(facetSet),
facetName);
final ETypedElement eTypedElement = FacetUtils
.getETypedElement(facet, propertyName,
ETypedElement.class);
if (eTypedElement instanceof FacetOperation) {
result = (FacetOperation) eTypedElement;
this.map.put(key, result);
}
}
return result;
}
public FacetOperation getImageProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IMAGE);
}
public FacetOperation getLabelProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.LABEL);
}
public FacetOperation getBackgroundProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.BACKGROUND);
}
public FacetOperation getForegroundProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.FOREGROUND);
}
public FacetOperation getFontNameProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.FONT);
}
public FacetOperation getFontSizeProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.FONT_SIZE);
}
public FacetOperation getIsBoldProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IS_BOLD);
}
public FacetOperation getIsItalicProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IS_ITALIC);
}
public FacetOperation getIsVisible() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IS_VISIBLE);
}
public FacetOperation getIsUnderlinedProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IS_UNDERLINED);
}
public FacetOperation getIsStruckthroughProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.IS_STRUCKTHROUGH);
}
public FacetOperation getTopLeftOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.TOP_L_OVERLAY);
}
public FacetOperation getTopMiddleOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.TOP_M_OVERLAY);
}
public FacetOperation getTopRightOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.TOP_R_OVERLAY);
}
public FacetOperation getBottomLeftOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.BOTTOM_L_OVERLAY);
}
public FacetOperation getBottomMiddleOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.BOTTOM_M_OVERLAY);
}
public FacetOperation getBottomRightOverlayProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.BOTTOM_R_OVERLAY);
}
public FacetOperation getSelectionProperty() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.SELECTION);
}
// methods for tooltips
public FacetOperation getToolTipTextProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.TEXT);
}
public FacetOperation getToolTipImageProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.IMAGE);
}
public FacetOperation getToolTipFontNameProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.FONT);
}
public FacetOperation getToolTipFontSizeProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.FONT_SIZE);
}
public FacetOperation getToolTipIsBoldProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.IS_BOLD);
}
public FacetOperation getToolTipIsItalicProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.IS_ITALIC);
}
public FacetOperation getToolTipBackgroundProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.BACKGROUND);
}
public FacetOperation getToolTipForegroundProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.FOREGROUND);
}
public FacetOperation getToolTipTopLeftOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.TOP_L_OVERLAY);
}
public FacetOperation getToolTipTopMiddleOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.TOP_M_OVERLAY);
}
public FacetOperation getToolTipTopRightOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.TOP_R_OVERLAY);
}
public FacetOperation getToolTipBottomLeftOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.BOTTOM_L_OVERLAY);
}
public FacetOperation getToolTipBottomMiddleOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.BOTTOM_M_OVERLAY);
}
public FacetOperation getToolTipBottomRightOverlayProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.BOTTOM_R_OVERLAY);
}
public FacetOperation getToolTipTimeDisplayedProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.TIME_DISPLAYED);
}
public FacetOperation getToolTipDisplayDelayTimeProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.DISPLAY_DELAY);
}
public FacetOperation getToolTipAlignmentProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.ALIGNMENT);
}
public FacetOperation getToolTipShadowProperty() {
return getPropertyByName(PropertiesHandler.TT_CUSTOM,
PropertiesHandler.SHADOW);
}
public FacetOperation getChildren() {
return getPropertyByName(PropertiesHandler.CUSTOM,
PropertiesHandler.CHILDREN);
}
}