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 32099 Details for
Bug 111902
Usability: Some diagrams may be hard to see when the grid is visible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
patch for grid enhancements
gridpatchDiagramUI.txt (text/plain), 16.38 KB, created by
Tom Macdougall
on 2005-12-21 18:02:06 EST
(
hide
)
Description:
patch for grid enhancements
Filename:
MIME Type:
Creator:
Tom Macdougall
Created:
2005-12-21 18:02:06 EST
Size:
16.38 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.gmf.runtime.diagram.ui >Index: src/org/eclipse/gmf/runtime/diagram/ui/internal/properties/WorkspaceViewerProperties.java >=================================================================== >RCS file: /home/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui/src/org/eclipse/gmf/runtime/diagram/ui/internal/properties/WorkspaceViewerProperties.java,v >retrieving revision 1.2 >diff -u -r1.2 WorkspaceViewerProperties.java >--- src/org/eclipse/gmf/runtime/diagram/ui/internal/properties/WorkspaceViewerProperties.java 12 Sep 2005 21:29:10 -0000 1.2 >+++ src/org/eclipse/gmf/runtime/diagram/ui/internal/properties/WorkspaceViewerProperties.java 21 Dec 2005 23:02:06 -0000 >@@ -33,10 +33,16 @@ > public final String PAGEBREAK_X ="pagebreak.x";//$NON-NLS-1$ > public final String PAGEBREAK_Y ="pagebreak.y";//$NON-NLS-1$ > >- public final String VIEWGRID = "viewgrid"; //$NON-NLS-1$ >- public final String SNAPTOGRID = "snaptogrid"; //$NON-NLS-1$ >+ // Ruler and grid properties >+ public final String VIEWGRID = "rulergrid.viewgrid"; //$NON-NLS-1$ >+ public final String GRIDLINESTYLE = "rulergrid.gridlinestyle"; //$NON-NLS-1$ >+ public final String GRIDLINECOLOR = "rulergrid.gridlinecolor"; //$NON-NLS-1$ >+ public final String SNAPTOGRID = "rulergrid.snaptogrid"; //$NON-NLS-1$ >+ public final String GRIDORDER = "rulergrid.gridlevel"; //$NON-NLS-1$ >+ public final String GRIDSPACING = "rulergrid.gridspacing"; //$NON-NLS-1$ > >- public final String VIEWRULERS = "viewrulers"; //$NON-NLS-1$ >+ public final String RULERUNIT = "rulergrid.rulerunit"; //$NON-NLS-1$ >+ public final String VIEWRULERS = "rulergrid.viewrulers"; //$NON-NLS-1$ > > // PRINTING PREFERENCES > public static String PREF_USE_WORKSPACE_SETTINGS = "print.useWorkspaceSettings"; //$NON-NLS-1$ >Index: src/org/eclipse/gmf/runtime/diagram/ui/editparts/DiagramRootEditPart.java >=================================================================== >RCS file: /home/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.runtime.diagram.ui/src/org/eclipse/gmf/runtime/diagram/ui/editparts/DiagramRootEditPart.java,v >retrieving revision 1.8 >diff -u -r1.8 DiagramRootEditPart.java >--- src/org/eclipse/gmf/runtime/diagram/ui/editparts/DiagramRootEditPart.java 2 Nov 2005 23:30:15 -0000 1.8 >+++ src/org/eclipse/gmf/runtime/diagram/ui/editparts/DiagramRootEditPart.java 21 Dec 2005 23:02:05 -0000 >@@ -23,6 +23,7 @@ > import org.eclipse.gef.Request; > import org.eclipse.gef.SnapToGeometry; > import org.eclipse.gef.SnapToGrid; >+import org.eclipse.gef.editparts.GridLayer; > import org.eclipse.gef.editparts.ScalableFreeformRootEditPart; > import org.eclipse.gef.editparts.ZoomListener; > import org.eclipse.gef.editparts.ZoomManager; >@@ -31,6 +32,7 @@ > import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; > import org.eclipse.gmf.runtime.diagram.ui.DiagramUIPlugin; > import org.eclipse.gmf.runtime.diagram.ui.DiagramUIStatusCodes; >+import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.GridLayerEx; > import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.PageBreakEditPart; > import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.ZoomableEditPart; > import org.eclipse.gmf.runtime.diagram.ui.internal.figures.PageBreaksFigure; >@@ -40,6 +42,7 @@ > import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer; > import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; > import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities; > import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.ConnectionLayerEx; > import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScaledGraphics; > import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; >@@ -47,6 +50,8 @@ > import org.eclipse.gmf.runtime.gef.ui.internal.editparts.AnimatableZoomManager; > import org.eclipse.jface.preference.IPreferenceStore; > import org.eclipse.jface.util.IPropertyChangeListener; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.graphics.Color; > import org.eclipse.swt.widgets.Display; > > /** >@@ -58,7 +63,7 @@ > public class DiagramRootEditPart > extends ScalableFreeformRootEditPart > implements ZoomableEditPart, IDiagramPreferenceSupport { >- >+ > /** > * GEF does not scale the FEEDBACK_LAYER but we do. > */ >@@ -112,6 +117,8 @@ > * the {@link DiagramPreferencesRegistry}. > */ > private PreferencesHint preferencesHint = PreferencesHint.USE_DEFAULTS; >+ private int printableLayerIndex; >+ private GridLayer gridLayer; > > /** > * Initializes the preferenceStore property change >@@ -162,17 +169,33 @@ > return layeredPane; > } > >+ protected void moveGridLayer(boolean inFront) { >+ if (layers.getChildren().indexOf(gridLayer) > printableLayerIndex && (! inFront)) { >+ layers.remove(gridLayer); >+ layers.add(gridLayer,GRID_LAYER, printableLayerIndex); >+ } else if (layers.getChildren().indexOf(gridLayer) <= printableLayerIndex && inFront) { >+ layers.remove(gridLayer); >+ layers.add(gridLayer,GRID_LAYER, printableLayerIndex+1); >+ } >+ } >+ > /** > * Creates and returns the scalable layers of this EditPart > * > * @return ScalableFreeformLayeredPane Pane that contains the scalable layers > */ > protected ScalableFreeformLayeredPane createScaledLayers() { >- layers = createScalableFreeformLayeredPane(); >+ >+ layers = createScalableFreeformLayeredPane(); > >- layers.add(createGridLayer(), GRID_LAYER); > layers.add(new FreeformLayer(), PAGE_BREAKS_LAYER); >+ printableLayerIndex = layers.getChildren().size(); > layers.add(getPrintableLayers(), PRINTABLE_LAYERS); >+ >+ gridLayer = createGridLayer(); >+ >+ layers.add(gridLayer, GRID_LAYER); >+ > layers.add(new FreeformLayer(), DECORATION_UNPRINTABLE_LAYER); > return layers; > } >@@ -247,7 +270,8 @@ > * @return PreferenceStore the workspace viewer preference store > */ > protected IPreferenceStore getWorkspaceViewerPreferences() { >- return ((DiagramGraphicalViewer) getViewer()) >+ if (getViewer() == null) return null; >+ return ((DiagramGraphicalViewer) getViewer()) > .getWorkspaceViewerPreferenceStore(); > } > >@@ -258,8 +282,40 @@ > * @return grid spacing value. > */ > public double getGridSpacing() { >- IPreferenceStore pluginStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); >- return pluginStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING); >+ >+ // Check the workspace properties >+ double gridSpacing = getWorkspaceViewerPreferences().getDouble(WorkspaceViewerProperties.GRIDSPACING); >+ >+ // If the workspace property is not set then get the global preference value >+ if (gridSpacing == 0) { >+ IPreferenceStore pluginStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); >+ gridSpacing = pluginStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING); >+ } >+ return gridSpacing; >+ } >+ >+ /** >+ * Sets the grid line style. >+ * @param color >+ * >+ * @param style >+ */ >+ public void setGridStyle(int style) { >+ if (gridLayer instanceof GridLayerEx) { >+ ((GridLayerEx) gridLayer).setLineStyle(style); >+ } >+ gridLayer.repaint(); >+ } >+ >+ >+ /** >+ * Sets the grid line color. >+ * @param color >+ * >+ * @param gridSpacing >+ */ >+ public void setGridColor(Integer rgbValue) { >+ gridLayer.setForegroundColor(FigureUtilities.integerToColor(rgbValue)); > } > > /** >@@ -270,16 +326,14 @@ > */ > public void setGridSpacing(double gridSpacing) { > >- // Get the Ruler Units from the Plug-in Preference Store >- IPreferenceStore preferenceStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); >- int rulerUnits = preferenceStore.getInt(IPreferenceConstants.PREF_RULER_UNITS); >- >+ int rulerUnits = getWorkspaceViewerPreferences().getInt(WorkspaceViewerProperties.RULERUNIT); >+ > // Get the Displays DPIs > double dotsPerInch = Display.getDefault().getDPI().x; > int spacingInPixels = 0; > > // Evaluate the Grid Spacing based on the ruler units >- switch( rulerUnits ) { >+ switch( rulerUnits) { > case RulerProvider.UNIT_INCHES: > spacingInPixels = (int)Math.round(dotsPerInch * gridSpacing); > break; >@@ -360,22 +414,24 @@ > } else if (isPageSizeChange(event.getProperty())) { > getPageBreakEditPart().calculatePageBreakFigureBounds(false); > refreshPageBreaks(); >- } else if (WorkspaceViewerProperties.VIEWGRID.equals(event.getProperty())) { >- >+ } else if (WorkspaceViewerProperties.VIEWGRID.equals(event.getProperty())) { > // Set the state of the Grid Enabled Property >- getViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, >- event.getNewValue()); >- } else if (WorkspaceViewerProperties.SNAPTOGRID.equals(event.getProperty())) { >- >+ getViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, event.getNewValue()); >+ } else if (WorkspaceViewerProperties.SNAPTOGRID.equals(event.getProperty())) { > // Set the state of the Snap to Grid Property >- getViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, >- event.getNewValue()); >- } else if (WorkspaceViewerProperties.VIEWRULERS.equals(event.getProperty())) { >- >+ getViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, event.getNewValue()); >+ } else if (WorkspaceViewerProperties.GRIDORDER.equals(event.getProperty())) { >+ // Set the grid level >+ moveGridLayer(((Boolean) event.getNewValue()).booleanValue()); >+ } else if (WorkspaceViewerProperties.GRIDSPACING.equals(event.getProperty())) { >+ // Set the grid spacing >+ Double spacing = (Double) event.getNewValue(); >+ setGridSpacing(spacing.doubleValue()); >+ } else if (WorkspaceViewerProperties.VIEWRULERS.equals(event.getProperty())) { > // Set the state of the Ruler Enabled Property > getViewer().setProperty(RulerProvider.PROPERTY_RULER_VISIBILITY, > event.getNewValue()); >- } else if (IPreferenceConstants.PREF_RULER_UNITS.equals(event.getProperty())) { >+ } else if (WorkspaceViewerProperties.RULERUNIT.equals(event.getProperty())) { > Object newValue = event.getNewValue(); > int rulerUnits; > >@@ -388,10 +444,8 @@ > setRulers(rulerUnits); > } catch (NumberFormatException e) { > Log.error( DiagramUIPlugin.getInstance(), >- DiagramUIStatusCodes.RESOURCE_FAILURE, >- e.toString() ); >- } >- >+ DiagramUIStatusCodes.RESOURCE_FAILURE, e.toString() ); >+ } > } else { > Log.error( DiagramUIPlugin.getInstance(), > DiagramUIStatusCodes.RESOURCE_FAILURE, >@@ -407,26 +461,14 @@ > double spacing = getGridSpacing(); > setGridSpacing(spacing); > >- } else if (IPreferenceConstants.PREF_GRID_SPACING.equals(event.getProperty())) { >- Object newValue = event.getNewValue(); >- double gridSpacing; >- try { >- if (newValue.getClass() == Double.class) { >- gridSpacing = ((Double) newValue).doubleValue(); >- setGridSpacing(gridSpacing); >- } else if (newValue.getClass() == String.class) { >- gridSpacing = Double.parseDouble((String) newValue); >- setGridSpacing(gridSpacing); >- } else { >- Log.error( DiagramUIPlugin.getInstance(), >- DiagramUIStatusCodes.RESOURCE_FAILURE, >- newValue.getClass().getName()); >- } >- } catch (NumberFormatException ex ) { >- Log.error( DiagramUIPlugin.getInstance(), >- DiagramUIStatusCodes.RESOURCE_FAILURE, >- ex.toString() ); >- } >+ } else if (WorkspaceViewerProperties.GRIDLINECOLOR.equals(event.getProperty())) { >+ Integer newValue = (Integer) event.getNewValue(); >+ // Set the grid line color >+ setGridColor(newValue); >+ } else if (WorkspaceViewerProperties.GRIDLINESTYLE.equals(event.getProperty())) { >+ Integer newValue = (Integer) event.getNewValue(); >+ // Set the grid line style >+ setGridStyle(newValue.intValue()); > } else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANIMATED_ZOOM)){ > refreshEnableZoomAnimation(getZoomManager()); > } else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANTIALIAS)){ >@@ -485,11 +527,7 @@ > * Refreshes ruler units on the diagram > */ > protected void refreshRulerUnits() { >- IPreferenceStore preferenceStore = >- (IPreferenceStore) getPreferencesHint().getPreferenceStore(); >- int rulerUnits = preferenceStore.getInt( >- IPreferenceConstants.PREF_RULER_UNITS); >- setRulers(rulerUnits); >+ setRulers(getWorkspaceViewerPreferences().getInt(WorkspaceViewerProperties.RULERUNIT)); > } > > /** >@@ -517,6 +555,8 @@ > > refreshEnableAntiAlias(); > >+ initWorkspaceViewerProperties(); >+ > refreshRulerUnits(); > > if (pane instanceof ZoomListener) { >@@ -524,6 +564,37 @@ > } > } > >+ private static final int LIGHT_GRAY_RGB = 12632256; >+ >+ /** >+ * Initializes the workspace viewer property that are stored per diagram >+ */ >+ private void initWorkspaceViewerProperties() { >+ IPreferenceStore wsPrefStore = getWorkspaceViewerPreferences(); >+ >+ if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDORDER)) { >+ wsPrefStore.setValue(WorkspaceViewerProperties.GRIDORDER, true); >+ } >+ if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDLINECOLOR)) { >+ wsPrefStore.setValue(WorkspaceViewerProperties.GRIDLINECOLOR, LIGHT_GRAY_RGB); >+ } else { >+ setGridColor(new Integer(wsPrefStore.getInt(WorkspaceViewerProperties.GRIDLINECOLOR))); >+ } >+ if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDLINESTYLE)) { >+ wsPrefStore.setValue(WorkspaceViewerProperties.GRIDLINESTYLE, SWT.LINE_DOT); >+ } else { >+ setGridStyle(wsPrefStore.getInt(WorkspaceViewerProperties.GRIDLINESTYLE)); >+ } >+ >+ if ((! wsPrefStore.contains(WorkspaceViewerProperties.RULERUNIT)) || >+ (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDSPACING))) { >+ IPreferenceStore preferenceStore = >+ (IPreferenceStore) getPreferencesHint().getPreferenceStore(); >+ wsPrefStore.setValue(WorkspaceViewerProperties.RULERUNIT, preferenceStore.getInt(IPreferenceConstants.PREF_RULER_UNITS)); >+ wsPrefStore.setValue(WorkspaceViewerProperties.GRIDSPACING, preferenceStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING)); >+ } >+ } >+ > /** > * > */ >@@ -622,4 +693,12 @@ > this.verticalRuler = verticalRuler; > } > >+ protected GridLayer createGridLayer() { >+ return new GridLayerEx(); >+ } >+ >+ protected GridLayer createGridLayer(int r, int g, int b) { >+ return new GridLayerEx(new Color(null,r,g,b)); >+ } >+ > } >Index: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/GridLayerEx.java >=================================================================== >RCS file: src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/GridLayerEx.java >diff -N src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/GridLayerEx.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/gmf/runtime/diagram/ui/internal/editparts/GridLayerEx.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,62 @@ >+package org.eclipse.gmf.runtime.diagram.ui.internal.editparts; >+ >+import org.eclipse.draw2d.Graphics; >+import org.eclipse.draw2d.geometry.Point; >+import org.eclipse.gef.editparts.GridLayer; >+import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.graphics.Color; >+ >+ >+/** >+ * Grid Layer extension that provides grid color, origin and line style >+ * settings to the GridLayer >+ * >+ * @author tmacdoug >+ * >+ */ >+public class GridLayerEx >+ extends GridLayer { >+ >+ // Grid line style (for example dotted, dashed, solid, etc.) >+ private int lineStyle = SWT.LINE_DOT; >+ >+ public GridLayerEx() { >+ super(); >+ } >+ >+ /** >+ * Constructs grid layer with the specified color >+ * @param color >+ */ >+ public GridLayerEx(Color color) { >+ super(); >+ setForegroundColor(color); >+ } >+ >+ /** >+ * Constructs grid layer with the specified color and origin >+ * @param color >+ * @param p >+ */ >+ public GridLayerEx(Color color, Point p) { >+ super(); >+ setForegroundColor(color); >+ setOrigin(p); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.gef.editparts.GridLayer#paintGrid(org.eclipse.draw2d.Graphics) >+ */ >+ protected void paintGrid(Graphics g) { >+ g.setLineStyle(lineStyle); >+ FigureUtilities.paintGrid(g, this, origin, gridX, gridY); >+ } >+ >+ >+ public void setLineStyle(int lineStyle) { >+ this.lineStyle = lineStyle; >+ } >+ >+ >+}
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 111902
: 32099 |
32100
|
32101