Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 60157 Details for
Bug 173499
Enhance org.eclipse.gmf.graphdef.editor with other figures, colors support and more usable properties organization
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Main property tab enchanced, customized, divided into several tabs
patch.txt (text/plain), 64.42 KB, created by
Anna Karjakina
on 2007-03-02 09:55:56 EST
(
hide
)
Description:
Main property tab enchanced, customized, divided into several tabs
Filename:
MIME Type:
Creator:
Anna Karjakina
Created:
2007-03-02 09:55:56 EST
Size:
64.42 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.graphdef.editor >Index: templates/common.skeleton >=================================================================== >RCS file: templates/common.skeleton >diff -N templates/common.skeleton >--- templates/common.skeleton 5 May 2006 16:31:18 -0000 1.2 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,207 +0,0 @@ >-public class CLASS { >- >-// [graphdef++] >- private java.util.Map myMethodsMap; >- >- private java.util.Set mySkippedDataTypeFeatures; >- >- private java.util.Set myAllowedNonDataTypeFeatures; >- >- private java.util.Map getMethodsMap() { >- if (myMethodsMap == null) { >- myMethodsMap = new java.util.HashMap(); >- myMethodsMap.put("XorFill", "myFigure.setFillXOR"); >- myMethodsMap.put("XorOutline", "myFigure.setOutlineXOR"); >- myMethodsMap.put("LineKind", "myFigure.setLineStyle"); >- myMethodsMap.put("CornerWidth", "myFigure.setCornerDimensions"); >- myMethodsMap.put("CornerHeight", "myFigure.setCornerDimensions"); >- myMethodsMap.put("Template", "myFigure.setPoints"); >- } >- return myMethodsMap; >- } >- >- private java.util.Set getSkippedDataTypeFeatures() { >- if (mySkippedDataTypeFeatures == null) { >- mySkippedDataTypeFeatures = new java.util.HashSet(); >- mySkippedDataTypeFeatures.add("name"); >- } >- return mySkippedDataTypeFeatures; >- } >- >- private java.util.Set getAllowedNonDataTypeFeatures() { >- if (myAllowedNonDataTypeFeatures == null) { >- myAllowedNonDataTypeFeatures = new java.util.HashSet(); >- myAllowedNonDataTypeFeatures.add("layout"); >- myAllowedNonDataTypeFeatures.add("layoutData"); >- myAllowedNonDataTypeFeatures.add("layout"); >- myAllowedNonDataTypeFeatures.add("template"); >- } >- return myAllowedNonDataTypeFeatures; >- } >- >- protected final boolean skip(GenFeature feature) { >- if (feature.getTypeGenClassifier() instanceof GenDataType) { >- return getSkippedDataTypeFeatures().contains(feature.getName()); >- } >- return !getAllowedNonDataTypeFeatures().contains(feature.getName()); >- } >- >- private final StringBuffer getValue(String modelElementVariable, GenFeature feature) { >- StringBuffer result = new StringBuffer(); >- String featureName = feature.getName(); >- if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) { >- result.append("getMapMode().DPtoLP("); >- result.append(modelElementVariable); >- result.append(".getCornerWidth()), getMapMode().DPtoLP("); >- result.append(modelElementVariable); >- result.append(".getCornerHeight())"); >- } else { >- result.append(modelElementVariable); >- result.append("."); >- result.append(feature.getGetAccessor()); >- result.append("()"); >- } >- return result; >- } >- >- private final void transform(StringBuffer value, GenFeature feature) { >- String featureName = feature.getName(); >- if ("cornerWidth".equals(featureName) || "cornerHeight".equals(featureName)) { >- value.insert(0, "new org.eclipse.draw2d.geometry.Dimension("); >- value.append(")"); >- } else if ("lineKind".equals(featureName)) { >- value.insert(0, "getLineStyle("); >- value.append(")"); >- } else if ("template".equals(featureName)) { >- value.insert(0, "getPointList("); >- value.append(")"); >- } >- } >- >- private final void setValue(StringBuffer value, GenFeature feature) { >- value.insert(0, "("); >- java.util.Map map = getMethodsMap(); >- String accessorName = feature.getAccessorName(); >- if (map.containsKey(accessorName)) { >- value.insert(0, (String) map.get(accessorName)); >- } else { >- if (feature.getTypeGenClassifier() instanceof GenDataType) { >- value.insert(0, accessorName); >- value.insert(0, "myFigure.set"); >- } else { >- value.insert(0, "Changed"); >- value.insert(0, feature.getName()); >- } >- } >- value.append(")"); >- } >- >- protected final String getProcessChangesCall(String modelElementVariable, GenFeature feature) { >- StringBuffer result = getValue(modelElementVariable, feature); >- transform(result, feature); >- setValue(result, feature); >- return result.toString(); >- } >-// [graphdef--] >- >- protected final String getFeatureValueGetter(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) { >- StringBuffer result = new StringBuffer(); >- if (feature.getGenClass().isExternalInterface()) { >-// Using EMF reflective method to access feature value >- result.append("(("); >- if (feature.isListType()) { >- result.append(importManager.getImportedName("java.util.Collection")); >- } else { >- result.append(importManager.getImportedName(feature.getTypeGenClass().getQualifiedInterfaceName())); >- } >- result.append(")"); >- if (!isContainerEObject) { >-// Casting container to EObject - ExternalIntarfce could be not an instance of EObject >- result.append("(("); >- result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); >- result.append(")"); >- } >- result.append(containerName); >- if (!isContainerEObject) { >- result.append(")"); >- } >- result.append(".eGet("); >- result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); >- result.append(".eINSTANCE.get"); >- result.append(feature.getFeatureAccessorName()); >- result.append("()))"); >- } else { >- if (isContainerEObject) { >-// Casting container to the typed interface >- result.append("(("); >- result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName())); >- result.append(")"); >- } >- result.append(containerName); >- if (isContainerEObject) { >- result.append(")"); >- } >- result.append("."); >- result.append(feature.getGetAccessor()); >- result.append("()"); >- } >- return result.toString(); >- } >- >- protected final String getFeatureValueSetterPrefix(String containerName, GenFeature feature, boolean isContainerEObject, ImportAssistant importManager) { >- StringBuffer result = new StringBuffer(); >- if (feature.getGenClass().isExternalInterface()) { >-// Using EMF reflective method to access feature value >- if (!isContainerEObject) { >-// Casting container to EObject - ExternalIntarfce could be not an instance of EObject >- result.append("(("); >- result.append(importManager.getImportedName("org.eclipse.emf.ecore.EObject")); >- result.append(")"); >- } >- result.append(containerName); >- if (!isContainerEObject) { >- result.append(")"); >- } >- result.append(".eSet("); >- result.append(importManager.getImportedName(feature.getGenPackage().getQualifiedPackageInterfaceName())); >- result.append(".eINSTANCE.get"); >- result.append(feature.getFeatureAccessorName()); >- result.append("(), "); >- } else { >- if (isContainerEObject) { >-// Casting container to the typed interface >- result.append("(("); >- result.append(importManager.getImportedName(feature.getGenClass().getQualifiedInterfaceName())); >- result.append(")"); >- } >- result.append(containerName); >- if (isContainerEObject) { >- result.append(")"); >- } >- if (feature.isListType()) { >- result.append("."); >- result.append(feature.getGetAccessor()); >- result.append("().add("); >- } else { >- result.append(".set"); >- result.append(feature.getAccessorName()); >- result.append("("); >- } >- } >- return result.toString(); >- } >- >- protected final String getMetaClassAccessor(GenClass genClass, ImportAssistant importManager) { >- StringBuffer buf = new StringBuffer(); >- buf.append(importManager.getImportedName(genClass.getGenPackage().getQualifiedPackageInterfaceName())) >- .append(".eINSTANCE.get") //$NON-NLS-1$ >- .append(genClass.getName()) >- .append("()"); //$NON-NLS-1$ >- return buf.toString(); >- } >- >- public String generate(Object argument) { >- return ""; >- } >- >-} >\ No newline at end of file >Index: models/graphdef.gmfgen >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.editor/models/graphdef.gmfgen,v >retrieving revision 1.18 >diff -u -r1.18 graphdef.gmfgen >--- models/graphdef.gmfgen 9 Feb 2007 20:08:32 -0000 1.18 >+++ models/graphdef.gmfgen 2 Mar 2007 14:50:51 -0000 >@@ -14,8 +14,8 @@ > notationViewFactoryClassName="CanvasViewFactory" > canonicalEditPolicyClassName="CanvasCanonicalEditPolicy" > iconProviderPriority="Low" >- validationProviderPriority="Low" >- creationWizardCategoryID="org.eclipse.ui.Examples/org.eclipse.gmf.examples"> >+ creationWizardCategoryID="org.eclipse.ui.Examples/org.eclipse.gmf.examples" >+ validationProviderPriority="Low"> > <diagramRunTimeClass > href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/> > <elementType >@@ -942,14 +942,29 @@ > label="Rulers & Grid"/> > <tabs > xsi:type="gmfgen:GenCustomPropertyTab" >- iD="domain" >- label="Core"> >+ iD="custom" >+ label="Styles" >+ className="CustomPropertySection"> > <filter >- xsi:type="gmfgen:TypeTabFilter"> >- <types>org.eclipse.gmf.runtime.notation.View</types> >- <types>org.eclipse.gef.EditPart</types> >- <generatedTypes>abstractNavigatorItem</generatedTypes> >- </filter> >+ xsi:type="gmfgen:CustomTabFilter" >+ className="PropertySectionFilters$ShapeFilter"/> >+ </tabs> >+ <tabs >+ xsi:type="gmfgen:GenCustomPropertyTab" >+ iD="layout" >+ label="Layout" >+ className="LayoutPropertySection"> >+ <filter >+ xsi:type="gmfgen:CustomTabFilter" >+ className="PropertySectionFilters$LayoutableFilter"/> >+ </tabs> >+ <tabs >+ xsi:type="gmfgen:GenCustomPropertyTab" >+ iD="points" >+ className="PointsPropertySection"> >+ <filter >+ xsi:type="gmfgen:CustomTabFilter" >+ className="PropertySectionFilters$PolylineFilter"/> > </tabs> > </propertySheet> > <domainGenModel >Index: templates/aspects/xpt/propsheet/PropertySection.xpt >=================================================================== >RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.graphdef.editor/templates/aspects/xpt/propsheet/PropertySection.xpt,v >retrieving revision 1.1 >diff -u -r1.1 PropertySection.xpt >--- templates/aspects/xpt/propsheet/PropertySection.xpt 9 Feb 2007 20:08:32 -0000 1.1 >+++ templates/aspects/xpt/propsheet/PropertySection.xpt 2 Mar 2007 14:50:51 -0000 >@@ -12,10 +12,60 @@ > «IMPORT "http://www.eclipse.org/gmf/2005/GenModel/2.0"» > «IMPORT "http://www.eclipse.org/emf/2002/Ecore"» > >+«EXTENSION aspects::xpt::propsheet::Utils» >+ >+«AROUND extendsList FOR gmfgen::GenCustomPropertyTab»«IF isCustomTab()»org.eclipse.gmf.graphdef.editor.sheet.AbstractCustomPropertySection«ELSE»«targetDef.proceed()»«ENDIF»«ENDAROUND» >+ >+«AROUND implementsClause FOR gmfgen::GenCustomPropertyTab»«IF isCustomTab()»«ELSE»«targetDef.proceed()»«ENDIF»«ENDAROUND» >+ >+«AROUND transfromSelectionMethod FOR gmfgen::GenCustomPropertyTab» >+«IF isLayoutTab() || isViewTab() || isPointTab() || isCustomTab()» >+ «EXPAND xpt::Common::generatedMemberComment("Modify/unwrap selection.")» >+ protected Object transformSelection(Object selected) { >+«IF isViewTab() -» >+ if (selected instanceof org.eclipse.gef.EditPart) { >+ return ((org.eclipse.gef.EditPart) selected).getModel(); >+ } >+ if (selected instanceof org.eclipse.gmf.runtime.notation.View || selected instanceof org.eclipse.gmf.runtime.notation.Style) { >+ return selected; >+ } >+ if (selected instanceof org.eclipse.core.runtime.IAdaptable) { >+ org.eclipse.gmf.runtime.notation.View view = (org.eclipse.gmf.runtime.notation.View) ((org.eclipse.core.runtime.IAdaptable) selected).getAdapter(org.eclipse.gmf.runtime.notation.View.class); >+ if (view != null) { >+ return view; >+ } >+ } >+«ELSE-» >+ if (selected instanceof org.eclipse.gef.EditPart) { >+ Object model = ((org.eclipse.gef.EditPart) selected).getModel(); >+ return model instanceof org.eclipse.gmf.runtime.notation.View ? ((org.eclipse.gmf.runtime.notation.View) model).getElement() : null; >+ } >+ if (selected instanceof org.eclipse.gmf.runtime.notation.View) { >+ return ((org.eclipse.gmf.runtime.notation.View) selected).getElement(); >+ } >+ if (selected instanceof org.eclipse.core.runtime.IAdaptable) { >+ org.eclipse.gmf.runtime.notation.View view = (org.eclipse.gmf.runtime.notation.View) ((org.eclipse.core.runtime.IAdaptable) selected).getAdapter(org.eclipse.gmf.runtime.notation.View.class); >+ if (view != null) { >+ return view.getElement(); >+ } >+ } >+«ENDIF-» >+ return selected; >+ } >+«ELSE-» >+«targetDef.proceed()» >+«ENDIF-» >+«ENDAROUND» >+ > «AROUND getPropertySourceMethod FOR gmfgen::GenCustomPropertyTab-» >+«IF isLayoutTab() || isViewTab() || isPointTab()» > «EXPAND xpt::Common::generatedMemberComment» > public org.eclipse.ui.views.properties.IPropertySource getPropertySource(Object object) { >- «EXPAND additionalPropertiesProvider-» >+ «IF isLayoutTab()-» >+ «EXPAND createLayoutSources» >+ «ELSEIF isPointTab()-» >+ «EXPAND createTemplatePointSources» >+ «ELSE-» > if (object instanceof org.eclipse.ui.views.properties.IPropertySource) { > return (org.eclipse.ui.views.properties.IPropertySource) object; > } >@@ -23,88 +73,127 @@ > if (af != null) { > org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class); > if (ips != null) { >- return new org.eclipse.emf.edit.ui.provider.PropertySource(object, ips); >+ return createPropertySource(object, ips); > } > } > if (object instanceof org.eclipse.core.runtime.IAdaptable) { > return (org.eclipse.ui.views.properties.IPropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.ui.views.properties.IPropertySource.class); > } > return null; >+ «ENDIF-» > } >+«ELSEIF isCustomTab()» >+«ELSE-» >+«targetDef.proceed()» >+«ENDIF-» > «ENDAROUND» > >-«DEFINE additionalPropertiesProvider FOR gmfgen::GenCustomPropertyTab-» >-if (object instanceof org.eclipse.gmf.gmfgraph.Layoutable) { >- org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource compositeSource = new org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource(object); >+«AROUND getPropertySourceProviderMethod FOR gmfgen::GenCustomPropertyTab» >+«IF isCustomTab()» >+«ELSE-» >+«targetDef.proceed()» >+«ENDIF-» >+«ENDAROUND» > >- compositeSource.addPropertySource(adaptToOldCompositePropertySource(object)); >+«AROUND getAdapterFactoryMethod FOR gmfgen::GenCustomPropertyTab» >+«IF isLayoutTab() || isViewTab() || isPointTab()» >+ «EXPAND xpt::Common::generatedMemberComment» >+ protected org.eclipse.emf.common.notify.AdapterFactory getAdapterFactory(Object object) { >+ if (getEditingDomain() instanceof org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain) { >+ return ((org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain) getEditingDomain()).getAdapterFactory(); >+ } >+ org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(object); >+ if (editingDomain != null) { >+ return ((org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain) editingDomain).getAdapterFactory(); >+ } >+ return null; >+ } >+«ELSEIF isCustomTab()» >+«ELSE-» >+«targetDef.proceed()» >+«ENDIF-» >+«ENDAROUND» > >- org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Manager", "Layout Manager", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createFlowLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createStackLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayout()}); >+«DEFINE createLayoutSources FOR gmfgen::GenCustomPropertyTab-» >+if (object instanceof org.eclipse.gmf.gmfgraph.Layoutable) { >+ org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource compositeSource = new org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource(object); >+ >+ org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutPropertyDescriptor = new LayoutItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Manager", "Layout Manager", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_Layout(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createFlowLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createStackLayout(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayout()}); > compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutPropertyDescriptor), "EMF")); //$NON-NLS-1$ > >- org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutDataPropertyDescriptor = new ChildMetaclassItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Data", "Layout Data", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData()}); >+ org.eclipse.emf.edit.provider.IItemPropertyDescriptor layoutDataPropertyDescriptor = new LayoutItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), "Layout Data", "Layout Data", org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getLayoutable_LayoutData(), true, new org.eclipse.emf.ecore.EObject[] {org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createBorderLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createCustomLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createGridLayoutData(), org.eclipse.gmf.gmfgraph.GMFGraphFactory.eINSTANCE.createXYLayoutData()}); > compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, new SingleDescriptorPropertySource(layoutDataPropertyDescriptor), "EMF")); //$NON-NLS-1$ >+ >+ return compositeSource; >+} >+return null; >+«ENDDEFINE» > >- if (object instanceof org.eclipse.gmf.gmfgraph.Polyline) { >- int counter = 1; >- for (java.util.Iterator it = ((org.eclipse.gmf.gmfgraph.Polyline) object).getTemplate().iterator(); it.hasNext(); counter++) { >- org.eclipse.gmf.gmfgraph.Point nextPoint = (org.eclipse.gmf.gmfgraph.Point) it.next(); >- final String titleX = "Point " + counter + " X"; >- org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorX = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleX, titleX, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_X(), true, "Template"); >- compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") { >- protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { >- return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { >- public Object getId() { >- return titleX; >- } >- }; >- } >- }); >+«DEFINE createTemplatePointSources FOR gmfgen::GenCustomPropertyTab-» >+if (object instanceof org.eclipse.gmf.gmfgraph.Polyline) { >+ org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource compositeSource = new org.eclipse.gmf.runtime.common.ui.services.properties.descriptors.CompositePropertySource(object); >+ >+ int counter = 1; >+ for (java.util.Iterator it = ((org.eclipse.gmf.gmfgraph.Polyline) object).getTemplate().iterator(); it.hasNext(); counter++) { >+ org.eclipse.gmf.gmfgraph.Point nextPoint = (org.eclipse.gmf.gmfgraph.Point) it.next(); >+ final String titleX = "Point " + counter + " X"; >+ org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorX = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleX, titleX, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_X(), true, "Template"); >+ compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorX), "EMF") { >+ protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { >+ return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { >+ public Object getId() { >+ return titleX; >+ } >+ }; >+ } >+ }); > >- final String titleY = "Point " + counter + " Y"; >- org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorY = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleY, titleY, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_Y(), true, "Template"); >- compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") { >- protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { >- return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { >- public Object getId() { >- return titleY; >- } >- }; >- } >- }); >- } >+ final String titleY = "Point " + counter + " Y"; >+ org.eclipse.emf.edit.provider.IItemPropertyDescriptor nextPointPropertyDescriptorY = new org.eclipse.emf.edit.provider.ItemPropertyDescriptor(«this.sheet.editorGen.plugin.getActivatorQualifiedClassName()».getInstance().getItemProvidersAdapterFactory(), titleY, titleY, org.eclipse.gmf.gmfgraph.GMFGraphPackage.eINSTANCE.getPoint_Y(), true, "Template"); >+ compositeSource.addPropertySource(new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(nextPoint, new SingleDescriptorPropertySource(nextPointPropertyDescriptorY), "EMF") { >+ protected org.eclipse.ui.views.properties.IPropertyDescriptor newPropertyDescriptor(org.eclipse.emf.edit.provider.IItemPropertyDescriptor itemPropertyDescriptor) { >+ return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositeSourcePropertyDescriptor(object, itemPropertyDescriptor, getCategory()) { >+ public Object getId() { >+ return titleY; >+ } >+ }; >+ } >+ }); > } >- >+ > return compositeSource; > } >+return null; > «ENDDEFINE» > > «AROUND additions FOR gmfgen::GenCustomPropertyTab-» >-«EXPAND xpt::Common::generatedMemberComment» >-private org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource adaptToOldCompositePropertySource(Object object) { >- if (object instanceof org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) { >- return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) object; >- } >- org.eclipse.emf.common.notify.AdapterFactory af = getAdapterFactory(object); >- if (af != null) { >- org.eclipse.emf.edit.provider.IItemPropertySource ips = (org.eclipse.emf.edit.provider.IItemPropertySource) af.adapt(object, org.eclipse.emf.edit.provider.IItemPropertySource.class); >- if (ips != null) { >- return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, ips, "EMF"); >- } >- } >- if (object instanceof org.eclipse.core.runtime.IAdaptable) { >- return (org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource) ((org.eclipse.core.runtime.IAdaptable) object).getAdapter(org.eclipse.gmf.runtime.common.ui.services.properties.ICompositePropertySource.class); >- } >- return null; >-} >- >-«EXPAND SingleDescriptorPropertySourceClass-» >-«EXPAND ChildMetaclassItemPropertyDescriptorClass-» >+ «IF isLayoutTab() || isPointTab()» >+ «EXPAND SingleDescriptorPropertySourceClass-» >+ «IF isLayoutTab()» >+ «EXPAND LayoutItemPropertyDescriptorClass-» >+ «ENDIF» >+ «ELSEIF isCustomTab()» >+ «EXPAND getImageRegistry-» >+ «ELSE» >+ «EXPAND createPropertySource» >+ «ENDIF» > «ENDAROUND» > >+ >+«DEFINE createPropertySource FOR gmfgen::GenCustomPropertyTab-» >+«EXPAND xpt::Common::generatedMemberComment» >+ protected org.eclipse.ui.views.properties.IPropertySource createPropertySource(Object object, org.eclipse.emf.edit.provider.IItemPropertySource itemPropertySource) { >+«IF isViewTab()-» >+ return new org.eclipse.gmf.runtime.diagram.ui.properties.descriptors.NotationPropertySource(object, itemPropertySource, "View"); >+«ELSE-» >+ return new org.eclipse.gmf.runtime.emf.ui.properties.descriptors.EMFCompositePropertySource(object, itemPropertySource, "EMF"); >+«ENDIF-» >+ } >+«ENDDEFINE» >+ > «DEFINE SingleDescriptorPropertySourceClass FOR gmfgen::GenCustomPropertyTab» > «EXPAND xpt::Common::generatedMemberComment» >-public static class SingleDescriptorPropertySource implements org.eclipse.emf.edit.provider.IItemPropertySource { >+private static class SingleDescriptorPropertySource implements org.eclipse.emf.edit.provider.IItemPropertySource { > > «EXPAND xpt::Common::generatedMemberComment» > private org.eclipse.emf.edit.provider.IItemPropertyDescriptor myPropertyDescriptor; >@@ -135,15 +224,15 @@ > } > «ENDDEFINE» > >-«DEFINE ChildMetaclassItemPropertyDescriptorClass FOR gmfgen::GenCustomPropertyTab» >+«DEFINE LayoutItemPropertyDescriptorClass FOR gmfgen::GenCustomPropertyTab» > «EXPAND xpt::Common::generatedMemberComment» >-public static class ChildMetaclassItemPropertyDescriptor extends org.eclipse.emf.edit.provider.ItemPropertyDescriptor { >+public static class LayoutItemPropertyDescriptor extends org.eclipse.emf.edit.provider.ItemPropertyDescriptor { > > «EXPAND xpt::Common::generatedMemberComment» > private org.eclipse.emf.ecore.EObject[] myValues; > > «EXPAND xpt::Common::generatedMemberComment» >- ChildMetaclassItemPropertyDescriptor(org.eclipse.emf.common.notify.AdapterFactory adapterFactory, String displayName, String description, org.eclipse.emf.ecore.EStructuralFeature feature, boolean isSettable, org.eclipse.emf.ecore.EObject[] valueInstances) { >+ LayoutItemPropertyDescriptor(org.eclipse.emf.common.notify.AdapterFactory adapterFactory, String displayName, String description, org.eclipse.emf.ecore.EStructuralFeature feature, boolean isSettable, org.eclipse.emf.ecore.EObject[] valueInstances) { > super(adapterFactory, displayName, description, feature, isSettable); > myValues = valueInstances; > } >@@ -189,3 +278,57 @@ > } > } > «ENDDEFINE» >+ >+«DEFINE getImageRegistry FOR gmfgen::GenCustomPropertyTab-» >+ «EXPAND xpt::Common::generatedMemberComment» >+ private static org.eclipse.jface.resource.ImageRegistry ourImageRegistry = new org.eclipse.jface.resource.ImageRegistry(); >+ >+ «EXPAND xpt::Common::generatedMemberComment» >+ static { >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_SOLID_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_solid.png")); >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASH_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_dash.png")); >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_DOT_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_dot.png")); >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASHDOT_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_dashdot.png")); >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASHDOTDOT_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_dashdotdot.png")); >+ ourImageRegistry.put(org.eclipse.gmf.gmfgraph.LineKind.LINE_CUSTOM_LITERAL.getLiteral(), «sheet.editorGen.plugin.getActivatorQualifiedClassName()».findImageDescriptor("icons/line_custom.png")); >+ } >+ >+ «EXPAND xpt::Common::generatedMemberComment» >+ public org.eclipse.jface.resource.ImageRegistry getImageRegistry() { >+ return ourImageRegistry; >+ } >+«ENDDEFINE» >+ >+«AROUND setInputMethod FOR gmfgen::GenCustomPropertyTab» >+«IF isCustomTab()-» >+ «EXPAND xpt::Common::generatedMemberComment» >+ private java.util.Collection mySavedSelection = new java.util.ArrayList(); >+ >+ «EXPAND xpt::Common::generatedMemberComment» >+ public java.util.Collection getSavedSelection() { >+ //StructuredSelection structured = (StructuredSelection) super.getSelection(); >+ //return structured.toList(); >+ return mySavedSelection; >+ } >+ >+ «EXPAND xpt::Common::generatedMemberComment» >+ public void setInput(org.eclipse.ui.IWorkbenchPart part, org.eclipse.jface.viewers.ISelection selection) { >+ if (selection.isEmpty() || false == selection instanceof org.eclipse.jface.viewers.StructuredSelection) { >+ super.setInput(part, selection); >+ return; >+ } >+ final org.eclipse.jface.viewers.StructuredSelection structuredSelection = ((org.eclipse.jface.viewers.StructuredSelection) selection); >+ java.util.ArrayList transformedSelection = new java.util.ArrayList(structuredSelection.size()); >+ for (java.util.Iterator it = structuredSelection.iterator(); it.hasNext();) { >+ Object r = transformSelection(it.next()); >+ if (r != null) { >+ transformedSelection.add(r); >+ } >+ } >+ mySavedSelection = transformedSelection; >+ super.setInput(part, new org.eclipse.jface.viewers.StructuredSelection(transformedSelection)); >+ } >+«ELSE-» >+«targetDef.proceed()» >+«ENDIF-» >+«ENDAROUND» >Index: icons/line_custom.png >=================================================================== >RCS file: icons/line_custom.png >diff -N icons/line_custom.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_custom.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+PNG >+ >+ >+IHDRDÒîþJsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<BIDATHKÝÕ-t"Aà=DD"H$D"8$D"H$D"Hòå:o³oa/*#òIOuUõÏþ¹ÝnÙ¯9Äü=Rr<Ëåd2éõzãñx6m·Ûóùñûý~³Ù¸t?8¹X,v»µ pYdÏç8ðï9?N¢Ûí6fAª@Ñ??Nçï¿#&ÄP%&ND">"y¹¶¼Ãá,2N§Ón·n¶,ûV«%ºUAðk6hV+¿ÃuP¿\.Ïù!5ì÷û???¨¸Lצ&¨Ws!@ª`~¹^¯£ÑѪ$Pü\?â×-ÂHM°~ðKþÒQóK p½äOöWec<®§ªJÑý >+°8odàbÖîË]çÐ3Q(?k?~ly©±d%&ÏËsø£ÛÔ(¿Z¯×°Ò;§T(l<ç4;Å0ÂTÌ"ø²3Í*.G43Ãá0½ ?¨ Ã]6å½6|ÇCy7Z±BJ<3.ÆV±?uÈ?5Dõ³ð2çF±º@Å >+±`~u?à,Öä&¶æKÕ ³· >+Uä»y~.È2vô¹Áò'Z >+%7/7³Ä%ö½ô"ÏÒ¿_o±(=ñ¶0JÈ\ýâ_O¾<w?·Äÿ?{m Û*ç¦}¥bùצÞè~Ü"²Å,ÿCIEND®B` >Index: icons/line_dot.png >=================================================================== >RCS file: icons/line_dot.png >diff -N icons/line_dot.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_dot.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+PNG >+ >+ >+IHDRD²-ïsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<TIDATHKíÁ0CuG#ج£«GZ/9åèYîNcô`ÆÆ?ĦèÈÌr´óÕÚG%3HkOªû«µGýTsÕ`?LÙd.üÈó´)k½IEND®B` >Index: icons/line_solid.png >=================================================================== >RCS file: icons/line_solid.png >diff -N icons/line_solid.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_solid.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+PNG >+ >+ >+IHDRDÒîþJsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<@IDATHKí >+0³94öXHCî¶ áÈ`ÆäXeBÐ?²'2AtBÿ¿ÓZLi3?Øx×ö2 ÷IEND®B` >Index: src/org/eclipse/gmf/graphdef/editor/sheet/AbstractCustomPropertySection.java >=================================================================== >RCS file: src/org/eclipse/gmf/graphdef/editor/sheet/AbstractCustomPropertySection.java >diff -N src/org/eclipse/gmf/graphdef/editor/sheet/AbstractCustomPropertySection.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/graphdef/editor/sheet/AbstractCustomPropertySection.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,633 @@ >+/* >+ * Copyright (c) 2006 Borland Software Corporation and others. >+ * 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: >+ * Borland Software Corporation - initial API and implementation >+ */ >+package org.eclipse.gmf.graphdef.editor.sheet; >+ >+public abstract class AbstractCustomPropertySection extends org.eclipse.gmf.runtime.diagram.ui.properties.sections.AbstractModelerPropertySection { >+ >+ public abstract java.util.Collection getSavedSelection(); >+ public abstract org.eclipse.jface.resource.ImageRegistry getImageRegistry(); >+ >+ private static final String KIND_KEY = "kind"; //$NON-NLS-1$ >+ >+ private static final int FILL = 101; >+ >+ private static final int OUTLINE = 102; >+ >+ private static final int XOR_FILL = 103; >+ >+ private static final int XOR_OUTLINE = 104; >+ >+ private static final int CORNER_WIDTH = 201; >+ >+ private static final int CORNER_HEIGHT = 202; >+ >+ private static final int LINE_WIDTH = 203; >+ >+ private LineWidthListener myListener; >+ >+ private org.eclipse.swt.widgets.Group myLineStyleGroup; >+ >+ private org.eclipse.swt.widgets.Group myLineWidthGroup; >+ >+ private org.eclipse.swt.widgets.Group myFillOutlineGroup; >+ >+ private org.eclipse.swt.widgets.Group myCornerGroup; >+ >+ private org.eclipse.swt.widgets.Spinner myLineWidthSpinner; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_Solid; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_Dash; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_Dot; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_DashDot; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_DashDotDot; >+ >+ private org.eclipse.swt.widgets.Button myLineStyle_Custom; >+ >+ private org.eclipse.swt.widgets.Button myFillCheckbox; >+ >+ private org.eclipse.swt.widgets.Button myOutlineCheckbox; >+ >+ private org.eclipse.swt.widgets.Button myXorFillCheckbox; >+ >+ private org.eclipse.swt.widgets.Button myXorOutlineCheckbox; >+ >+ private org.eclipse.swt.widgets.Spinner myCornerWidthSpinner; >+ >+ private org.eclipse.swt.widgets.Spinner myCornerHeightSpinner; >+ >+ private org.eclipse.swt.widgets.Composite mySectionComposite; >+ >+ protected org.eclipse.emf.ecore.EObject getEObject() { >+ if (getSavedSelection() != null && !getSavedSelection().isEmpty()) { >+ return (org.eclipse.emf.ecore.EObject) getSavedSelection().iterator().next(); >+ } >+ return super.getEObject(); >+ } >+ >+ public void createControls(org.eclipse.swt.widgets.Composite parent, org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage tabbedPropertySheetPage) { >+ super.createControls(parent, tabbedPropertySheetPage); >+ mySectionComposite = getWidgetFactory().createFlatFormComposite(parent); >+ >+ myLineStyleGroup = createLineStyleGroup(mySectionComposite, getLineStyleLabel()); >+ myLineStyle_Solid = createLineStyleRadio(myLineStyleGroup, null, false, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_SOLID_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_SOLID); >+ myLineStyle_Dash = createLineStyleRadio(myLineStyleGroup, myLineStyle_Solid, false, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASH_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_DASH); >+ myLineStyle_Dot = createLineStyleRadio(myLineStyleGroup, myLineStyle_Dash, false, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_DOT_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_DOT); >+ myLineStyle_DashDot = createLineStyleRadio(myLineStyleGroup, myLineStyle_Dot, false, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASHDOT_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_DASHDOT); >+ myLineStyle_DashDotDot = createLineStyleRadio(myLineStyleGroup, myLineStyle_DashDot, false, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_DASHDOTDOT_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_DASHDOTDOT); >+ myLineStyle_Custom = createLineStyleRadio(myLineStyleGroup, myLineStyle_DashDotDot, true, getImageRegistry().get(org.eclipse.gmf.gmfgraph.LineKind.LINE_CUSTOM_LITERAL.getLiteral()), org.eclipse.swt.SWT.LINE_CUSTOM); >+ >+ myLineWidthGroup = createLineWidthGroup(mySectionComposite, getLineWidthLabel()); >+ //org.eclipse.swt.custom.CLabel lineWidthLabel = createLabelWidget(myLineWidthGroup, getLineWidthLabel(), null); >+ myLineWidthSpinner = createSpinnerWidget(myLineWidthGroup, null, LINE_WIDTH); >+ >+ myFillOutlineGroup = createFillOutlineGroup(mySectionComposite, getFillOutlineLabel()); >+ myFillCheckbox = createCheckbox(myFillOutlineGroup, getFillPropertyNameLabel(), null, null, FILL); >+ myOutlineCheckbox = createCheckbox(myFillOutlineGroup, getOutlinePropertyNameLabel(), myFillCheckbox, null, OUTLINE); >+ myXorFillCheckbox = createCheckbox(myFillOutlineGroup, getXorFillPropertyNameLabel(), null, myFillCheckbox, XOR_FILL); >+ myXorOutlineCheckbox = createCheckbox(myFillOutlineGroup, getXorOutlinePropertyNameLabel(), myXorFillCheckbox, myOutlineCheckbox, XOR_OUTLINE); >+ >+ myCornerGroup = createCornerGroup(mySectionComposite, getCornerDimensionsLabel()); >+ org.eclipse.swt.custom.CLabel cornerWidthLabel = createLabelWidget(myCornerGroup, getCornerWidthLabel(), null); >+ myCornerWidthSpinner = createSpinnerWidget(myCornerGroup, cornerWidthLabel, CORNER_WIDTH); >+ org.eclipse.swt.custom.CLabel cornerHeigthLabel = createLabelWidget(myCornerGroup, getCornerHeightLabel(), myCornerWidthSpinner); >+ myCornerHeightSpinner = createSpinnerWidget(myCornerGroup, cornerHeigthLabel, CORNER_HEIGHT); >+ >+ getListener().startListeningTo(myLineWidthSpinner); >+ getListener().startListeningTo(myLineStyle_Solid); >+ getListener().startListeningTo(myLineStyle_Dash); >+ getListener().startListeningTo(myLineStyle_Dot); >+ getListener().startListeningTo(myLineStyle_DashDot); >+ getListener().startListeningTo(myLineStyle_DashDotDot); >+ getListener().startListeningTo(myLineStyle_Custom); >+ getListener().startListeningTo(myFillCheckbox); >+ getListener().startListeningTo(myOutlineCheckbox); >+ getListener().startListeningTo(myXorFillCheckbox); >+ getListener().startListeningTo(myXorOutlineCheckbox); >+ getListener().startListeningTo(myCornerWidthSpinner); >+ getListener().startListeningTo(myCornerHeightSpinner); >+ } >+ >+ public void dispose() { >+ getListener().stopListeningTo(myLineWidthSpinner); >+ getListener().stopListeningTo(myLineStyle_Solid); >+ getListener().stopListeningTo(myLineStyle_Dash); >+ getListener().stopListeningTo(myLineStyle_Dot); >+ getListener().stopListeningTo(myLineStyle_DashDot); >+ getListener().stopListeningTo(myLineStyle_DashDotDot); >+ getListener().stopListeningTo(myLineStyle_Custom); >+ getListener().stopListeningTo(myFillCheckbox); >+ getListener().stopListeningTo(myOutlineCheckbox); >+ getListener().stopListeningTo(myXorFillCheckbox); >+ getListener().stopListeningTo(myXorOutlineCheckbox); >+ getListener().stopListeningTo(myCornerWidthSpinner); >+ getListener().stopListeningTo(myCornerHeightSpinner); >+ super.dispose(); >+ } >+ >+ protected org.eclipse.swt.widgets.Button createLineStyleRadio(org.eclipse.swt.widgets.Composite parent, org.eclipse.swt.widgets.Control topControl, boolean last, org.eclipse.swt.graphics.Image image, int kind) { >+ org.eclipse.swt.widgets.Button radio = getWidgetFactory().createButton(parent, "", org.eclipse.swt.SWT.RADIO); >+ radio.setImage(image); >+ radio.setData(KIND_KEY, new Integer(kind)); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ if (topControl == null) { >+ data.top = new org.eclipse.swt.layout.FormAttachment(0); >+ } else { >+ data.top = new org.eclipse.swt.layout.FormAttachment(topControl, 5); >+ } >+ data.left = new org.eclipse.swt.layout.FormAttachment(0); >+ if (last) { >+ data.bottom = new org.eclipse.swt.layout.FormAttachment(100); >+ } >+ radio.setLayoutData(data); >+ return radio; >+ } >+ >+ protected org.eclipse.swt.widgets.Group createLineWidthGroup(org.eclipse.swt.widgets.Composite parent, String label) { >+ org.eclipse.swt.widgets.Group group = getWidgetFactory().createGroup(parent, label); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ data.top = new org.eclipse.swt.layout.FormAttachment(0, 0); >+ data.left = new org.eclipse.swt.layout.FormAttachment(myLineStyleGroup); >+ group.setLayoutData(data); >+ group.setLayout(createStandardFormLayout()); >+ return group; >+ } >+ >+ protected org.eclipse.swt.widgets.Group createLineStyleGroup(org.eclipse.swt.widgets.Composite parent, String label) { >+ org.eclipse.swt.widgets.Group group = getWidgetFactory().createGroup(parent, label); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ data.top = new org.eclipse.swt.layout.FormAttachment(0, 0); >+ data.left = new org.eclipse.swt.layout.FormAttachment(0); >+ group.setLayoutData(data); >+ group.setLayout(createStandardFormLayout()); >+ return group; >+ } >+ >+ protected org.eclipse.swt.widgets.Group createFillOutlineGroup(org.eclipse.swt.widgets.Composite parent, String label) { >+ org.eclipse.swt.widgets.Group group = getWidgetFactory().createGroup(parent, label); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ data.top = new org.eclipse.swt.layout.FormAttachment(myLineWidthGroup); >+ data.left = new org.eclipse.swt.layout.FormAttachment(myLineStyleGroup); >+ group.setLayoutData(data); >+ group.setLayout(createStandardFormLayout()); >+ return group; >+ } >+ >+ protected org.eclipse.swt.widgets.Group createCornerGroup(org.eclipse.swt.widgets.Composite parent, String label) { >+ org.eclipse.swt.widgets.Group group = getWidgetFactory().createGroup(parent, label); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ data.top = new org.eclipse.swt.layout.FormAttachment(myFillOutlineGroup); >+ data.left = new org.eclipse.swt.layout.FormAttachment(myLineStyleGroup); >+ data.bottom = new org.eclipse.swt.layout.FormAttachment(100); >+ group.setLayoutData(data); >+ group.setLayout(createStandardFormLayout()); >+ return group; >+ } >+ >+ protected org.eclipse.swt.widgets.Layout createStandardFormLayout() { >+ org.eclipse.swt.layout.FormLayout layout = new org.eclipse.swt.layout.FormLayout(); >+ layout.marginWidth = org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants.HSPACE + 2; >+ layout.marginHeight = org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants.VSPACE; >+ layout.spacing = org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants.VMARGIN + 1; >+ return layout; >+ } >+ >+ protected org.eclipse.swt.widgets.Button createCheckbox(org.eclipse.swt.widgets.Group parent, String label, org.eclipse.swt.widgets.Control topControl, org.eclipse.swt.widgets.Control leftControl, int kind) { >+ org.eclipse.swt.widgets.Button checkbox = getWidgetFactory().createButton(parent, label, org.eclipse.swt.SWT.CHECK); >+ checkbox.setData(KIND_KEY, new Integer(kind)); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ if (topControl == null) { >+ data.top = new org.eclipse.swt.layout.FormAttachment(0); >+ } else { >+ data.top = new org.eclipse.swt.layout.FormAttachment(topControl); >+ } >+ if (leftControl == null) { >+ data.left = new org.eclipse.swt.layout.FormAttachment(0); >+ } else { >+ data.right = new org.eclipse.swt.layout.FormAttachment(100, -org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants.HSPACE); >+ data.left = new org.eclipse.swt.layout.FormAttachment(50); >+ } >+ checkbox.setLayoutData(data); >+ return checkbox; >+ } >+ >+ private String getCornerDimensionsLabel() { >+ return "Corner Dimensions"; >+ } >+ >+ private String getCornerWidthLabel() { >+ return "Corner Width"; >+ } >+ >+ private String getCornerHeightLabel() { >+ return "Corner Height"; >+ } >+ >+ private String getFillPropertyNameLabel() { >+ return "Fill"; >+ } >+ >+ private String getOutlinePropertyNameLabel() { >+ return "Outline"; >+ } >+ >+ private String getXorFillPropertyNameLabel() { >+ return "XOR Fill"; >+ } >+ >+ private String getXorOutlinePropertyNameLabel() { >+ return "XOR Outline"; >+ } >+ >+ private String getFillOutlineLabel() { >+ return "Mix Styles"; >+ } >+ >+ private String getLineStyleLabel() { >+ return "Line Style"; >+ } >+ >+ private String getLineWidthLabel() { >+ return "Line Width"; >+ } >+ >+ protected void setLineWidth(final int lineWidth) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setLineWidth(lineWidth); >+ } >+ }, "Setting line width"); >+ } >+ >+ protected void setLineKind(final int lineKind) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setLineKind(org.eclipse.gmf.gmfgraph.LineKind.get(lineKind)); >+ } >+ }, "Setting line style"); >+ } >+ >+ protected void setFill(final boolean value) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setFill(value); >+ } >+ }, "Setting shape fill"); >+ } >+ >+ protected void setOutline(final boolean value) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setOutline(value); >+ } >+ }, "Setting shape outline"); >+ } >+ >+ protected void setXorFill(final boolean value) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setXorFill(value); >+ } >+ }, "Setting shape XOR fill"); >+ } >+ >+ protected void setXorOutline(final boolean value) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ getShape().setXorOutline(value); >+ } >+ }, "Setting shape XOR outline"); >+ } >+ >+ protected void setCornerWidth(final int cornerWidth) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ ((org.eclipse.gmf.gmfgraph.RoundedRectangle) getShape()).setCornerWidth(cornerWidth); >+ } >+ }, "Setting corner width"); >+ } >+ >+ protected void setCornerHeight(final int cornerHeight) { >+ modifyModel(new RunnableWithShape() { >+ >+ public void run() { >+ ((org.eclipse.gmf.gmfgraph.RoundedRectangle) getShape()).setCornerHeight(cornerHeight); >+ } >+ }, "Setting corner height"); >+ } >+ >+ public static abstract class RunnableWithShape implements Runnable { >+ >+ private org.eclipse.gmf.gmfgraph.Shape myShape; >+ >+ public org.eclipse.gmf.gmfgraph.Shape getShape() { >+ return myShape; >+ } >+ >+ public void setTargetShape(org.eclipse.gmf.gmfgraph.Shape shape) { >+ myShape = shape; >+ } >+ } >+ >+ protected void modifyModel(RunnableWithShape runnable, String commandName) { >+ java.util.ArrayList commands = new java.util.ArrayList(); >+ for (java.util.Iterator it = getSavedSelection().iterator(); it.hasNext();) { >+ final org.eclipse.emf.ecore.EObject next = (org.eclipse.emf.ecore.EObject) it.next(); >+ if (next instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ final org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) next; >+ runnable.setTargetShape(shape); >+ commands.add(createCommand(commandName, next, runnable)); >+ } >+ } >+ executeAsCompositeCommand(commandName, commands); >+ refresh(); >+ } >+ >+ private LineWidthListener getListener() { >+ if (myListener == null) { >+ myListener = new LineWidthListener(); >+ } >+ return myListener; >+ } >+ >+ private class LineWidthListener implements org.eclipse.swt.events.ModifyListener, org.eclipse.swt.events.SelectionListener { >+ >+ private boolean nonUserChange; >+ >+ public boolean isNonUserChange() { >+ return nonUserChange; >+ } >+ >+ private void applyChangesFrom(org.eclipse.swt.widgets.Widget widget) { >+ if (!isNonUserChange()) { >+ if (widget instanceof org.eclipse.swt.widgets.Spinner) { >+ Integer kind = (Integer) widget.getData(KIND_KEY); >+ int value = ((org.eclipse.swt.widgets.Spinner) widget).getSelection(); >+ switch (kind.intValue()) { >+ case CORNER_WIDTH: { >+ setCornerWidth(value); >+ break; >+ } >+ case CORNER_HEIGHT: { >+ setCornerHeight(value); >+ break; >+ } >+ case LINE_WIDTH: { >+ setLineWidth(value); >+ break; >+ } >+ } >+ } else if (widget instanceof org.eclipse.swt.widgets.Button) { >+ boolean turnedOn = ((org.eclipse.swt.widgets.Button) widget).getSelection(); >+ Integer kind = (Integer) widget.getData(KIND_KEY); >+ switch (kind.intValue()) { >+ case org.eclipse.swt.SWT.LINE_SOLID: >+ case org.eclipse.swt.SWT.LINE_DASH: >+ case org.eclipse.swt.SWT.LINE_DOT: >+ case org.eclipse.swt.SWT.LINE_DASHDOT: >+ case org.eclipse.swt.SWT.LINE_DASHDOTDOT: >+ case org.eclipse.swt.SWT.LINE_CUSTOM: { >+ setLineKind(kind.intValue()); >+ break; >+ } >+ case FILL: { >+ setFill(turnedOn); >+ break; >+ } >+ case OUTLINE: { >+ setOutline(turnedOn); >+ break; >+ } >+ case XOR_FILL: { >+ setXorFill(turnedOn); >+ break; >+ } >+ case XOR_OUTLINE: { >+ setXorOutline(turnedOn); >+ break; >+ } >+ } >+ } >+ } >+ } >+ >+ public void modifyText(org.eclipse.swt.events.ModifyEvent e) { >+ applyChangesFrom(e.widget); >+ } >+ >+ public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) { >+ widgetSelected(e); >+ } >+ >+ public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { >+ applyChangesFrom(e.widget); >+ } >+ >+ public void startListeningTo(org.eclipse.swt.widgets.Spinner spinner) { >+ spinner.addModifyListener(this); >+ spinner.addSelectionListener(this); >+ } >+ >+ public void stopListeningTo(org.eclipse.swt.widgets.Spinner spinner) { >+ spinner.removeModifyListener(this); >+ spinner.removeSelectionListener(this); >+ } >+ >+ public void startListeningTo(org.eclipse.swt.widgets.Button button) { >+ button.addSelectionListener(this); >+ } >+ >+ public void stopListeningTo(org.eclipse.swt.widgets.Button button) { >+ button.removeSelectionListener(this); >+ } >+ >+ public void startNonUserChange() { >+ nonUserChange = true; >+ } >+ >+ public void finishNonUserChange() { >+ nonUserChange = false; >+ } >+ } >+ >+ protected org.eclipse.swt.custom.CLabel createLabelWidget(org.eclipse.swt.widgets.Composite parent, String labelText, org.eclipse.swt.widgets.Control leftWidget) { >+ org.eclipse.swt.custom.CLabel label = getWidgetFactory().createCLabel(parent, labelText); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ data.top = new org.eclipse.swt.layout.FormAttachment(0); >+ if (leftWidget != null) { >+ data.left = new org.eclipse.swt.layout.FormAttachment(leftWidget); >+ } else { >+ data.left = new org.eclipse.swt.layout.FormAttachment(0); >+ } >+ label.setLayoutData(data); >+ return label; >+ } >+ >+ protected org.eclipse.swt.widgets.Spinner createSpinnerWidget(org.eclipse.swt.widgets.Composite parent, org.eclipse.swt.widgets.Control leftWidget, int kind) { >+ org.eclipse.swt.widgets.Spinner spinner = new org.eclipse.swt.widgets.Spinner(parent, org.eclipse.swt.SWT.BORDER); >+ spinner.setMinimum(1); >+ spinner.setMaximum(999); >+ spinner.setSelection(100); >+ spinner.setIncrement(1); >+ spinner.setPageIncrement(100); >+ spinner.setBackground(parent.getBackground()); >+ spinner.setForeground(parent.getForeground()); >+ spinner.setData(KIND_KEY, kind); >+ org.eclipse.swt.layout.FormData data = new org.eclipse.swt.layout.FormData(); >+ if (leftWidget != null) { >+ data.left = new org.eclipse.swt.layout.FormAttachment(leftWidget); >+ } else { >+ data.left = new org.eclipse.swt.layout.FormAttachment(0); >+ } >+ data.top = new org.eclipse.swt.layout.FormAttachment(0); >+ spinner.setLayoutData(data); >+ return spinner; >+ } >+ >+ private int getLineKind(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.getLineKind().getValue(); >+ } >+ return -1; >+ } >+ >+ private int getLineWidth(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.getLineWidth(); >+ } >+ return -1; >+ } >+ >+ private boolean getFill(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.isFill(); >+ } >+ return false; >+ } >+ >+ private boolean getOutline(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.isOutline(); >+ } >+ return false; >+ } >+ >+ private boolean getXorFill(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.isXorFill(); >+ } >+ return false; >+ } >+ >+ private boolean getXorOutline(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.Shape) { >+ org.eclipse.gmf.gmfgraph.Shape shape = (org.eclipse.gmf.gmfgraph.Shape) object; >+ return shape.isXorOutline(); >+ } >+ return false; >+ } >+ >+ private int getCornerWidth(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.RoundedRectangle) { >+ org.eclipse.gmf.gmfgraph.RoundedRectangle cornered = (org.eclipse.gmf.gmfgraph.RoundedRectangle) object; >+ return cornered.getCornerWidth(); >+ } >+ return -1; >+ } >+ >+ private int getCornerHeight(Object object) { >+ if (object instanceof org.eclipse.gmf.gmfgraph.RoundedRectangle) { >+ org.eclipse.gmf.gmfgraph.RoundedRectangle cornered = (org.eclipse.gmf.gmfgraph.RoundedRectangle) object; >+ return cornered.getCornerHeight(); >+ } >+ return -1; >+ } >+ >+ public void refresh() { >+ getListener().startNonUserChange(); >+ try { >+ for (java.util.Iterator it = getSavedSelection().iterator(); it.hasNext();) { >+ final Object next = it.next(); >+ mySectionComposite.setVisible(next instanceof org.eclipse.gmf.gmfgraph.Shape); >+ if (!mySectionComposite.isVisible()) { >+ return; >+ } >+ executeAsReadAction(new Runnable() { >+ >+ public void run() { >+ int lineWidth = getLineWidth(next); >+ if (lineWidth != -1) { >+ myLineWidthSpinner.setSelection(lineWidth); >+ } >+ int lineKind = getLineKind(next); >+ myLineStyle_Solid.setSelection(lineKind == org.eclipse.swt.SWT.LINE_SOLID); >+ myLineStyle_Dash.setSelection(lineKind == org.eclipse.swt.SWT.LINE_DASH); >+ myLineStyle_Dot.setSelection(lineKind == org.eclipse.swt.SWT.LINE_DOT); >+ myLineStyle_DashDot.setSelection(lineKind == org.eclipse.swt.SWT.LINE_DASHDOT); >+ myLineStyle_DashDotDot.setSelection(lineKind == org.eclipse.swt.SWT.LINE_DASHDOTDOT); >+ myLineStyle_Custom.setSelection(lineKind == org.eclipse.swt.SWT.LINE_CUSTOM); >+ myFillCheckbox.setSelection(getFill(next)); >+ myOutlineCheckbox.setSelection(getOutline(next)); >+ myXorFillCheckbox.setSelection(getXorFill(next)); >+ myXorOutlineCheckbox.setSelection(getXorOutline(next)); >+ myCornerGroup.setVisible(next instanceof org.eclipse.gmf.gmfgraph.RoundedRectangle); >+ if (myCornerGroup.isVisible()) { >+ int cornerWidth = getCornerWidth(next); >+ if (cornerWidth != -1) { >+ myCornerWidthSpinner.setSelection(cornerWidth); >+ } >+ int cornerHeight = getCornerHeight(next); >+ if (cornerHeight != -1) { >+ myCornerHeightSpinner.setSelection(cornerHeight); >+ } >+ } >+ } >+ }); >+ } >+ } finally { >+ getListener().finishNonUserChange(); >+ } >+ } >+ >+ private org.eclipse.swt.widgets.Button getLineKindButton(int lineKind) { >+ switch (lineKind) { >+ case org.eclipse.swt.SWT.LINE_SOLID: >+ return myLineStyle_Solid; >+ case org.eclipse.swt.SWT.LINE_DOT: >+ return myLineStyle_Dot; >+ case org.eclipse.swt.SWT.LINE_DASH: >+ return myLineStyle_Dash; >+ case org.eclipse.swt.SWT.LINE_DASHDOT: >+ return myLineStyle_DashDot; >+ case org.eclipse.swt.SWT.LINE_DASHDOTDOT: >+ return myLineStyle_DashDotDot; >+ case org.eclipse.swt.SWT.LINE_CUSTOM: >+ return myLineStyle_Custom; >+ default: >+ return null; >+ } >+ } >+} >Index: icons/line_dash.png >=================================================================== >RCS file: icons/line_dash.png >diff -N icons/line_dash.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_dash.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+PNG >+ >+ >+IHDRD²-ïsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<gIDATHKcüÿÿ?ð@ÏÀ0l|Jb£¤!À°?æÆïß¿ÃeV%¢ SPP@óÌýû÷±sW¥DDD yæùóçpYdÆ U9ZÒü?Z4Ö?A3Óùro!íIEND®B` >Index: icons/line_dashdotdot.png >=================================================================== >RCS file: icons/line_dashdotdot.png >diff -N icons/line_dashdotdot.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_dashdotdot.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+PNG >+ >+ >+IHDRDÒîþJsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<IDATHKíT± >+À K?áÁ·91'0¦éH¥¢x´,ðAD& Lçe§K¡µ¶\vÁ*+¯?wÕYê¥çKR0½wÖYùïiuúéS¡ÖºADVYyí¼c¬ÎR/=³þÿ¬f¯ÉÍäfþÀ >+î¿OÿfÓIEND®B` >Index: templates/aspects/xpt/propsheet/Utils.ext >=================================================================== >RCS file: templates/aspects/xpt/propsheet/Utils.ext >diff -N templates/aspects/xpt/propsheet/Utils.ext >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ templates/aspects/xpt/propsheet/Utils.ext 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,32 @@ >+/* >+ * Copyright (c) 2007 Borland Software Corporation >+ * >+ * 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: >+ * Anna Karjakina (Borland) - initial API and implementation >+ */ >+ >+import "http://www.eclipse.org/gmf/2005/GraphicalDefinition"; >+import "http://www.eclipse.org/gmf/2005/GenModel/2.0"; >+import "http://www.eclipse.org/emf/2002/GenModel"; >+import "http://www.eclipse.org/emf/2002/Ecore"; >+ >+boolean isLayoutTab(gmfgen::GenCustomPropertyTab tab) : >+"layout" == tab.iD >+; >+ >+boolean isPointTab(gmfgen::GenCustomPropertyTab tab) : >+"points" == tab.iD >+; >+ >+boolean isViewTab(gmfgen::GenCustomPropertyTab tab) : >+"view" == tab.iD >+; >+ >+boolean isCustomTab(gmfgen::GenCustomPropertyTab tab) : >+"custom" == tab.iD >+; >Index: icons/line_dashdot.png >=================================================================== >RCS file: icons/line_dashdot.png >diff -N icons/line_dashdot.png >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/line_dashdot.png 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+PNG >+ >+ >+IHDRDÒîþJsRGB®ÎégAMA±?üa cHRMz&úèu0ê`:pºQ<xIDATHKcüÿÿ?ð@ÏÀ0l|Jb£¤!À°78~ü8«¿ÿTK?QhR42_A¦ æû÷ï5à'¾P¤É¸ADDg?TK?QhR42y´¤ù´h¬33£1C?ü°uþPIEND®B`
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 173499
: 60157 |
61427
|
61428
|
62857
|
62858
|
62859