Lines 23-28
Link Here
|
23 |
import org.eclipse.gef.Request; |
23 |
import org.eclipse.gef.Request; |
24 |
import org.eclipse.gef.SnapToGeometry; |
24 |
import org.eclipse.gef.SnapToGeometry; |
25 |
import org.eclipse.gef.SnapToGrid; |
25 |
import org.eclipse.gef.SnapToGrid; |
|
|
26 |
import org.eclipse.gef.editparts.GridLayer; |
26 |
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart; |
27 |
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart; |
27 |
import org.eclipse.gef.editparts.ZoomListener; |
28 |
import org.eclipse.gef.editparts.ZoomListener; |
28 |
import org.eclipse.gef.editparts.ZoomManager; |
29 |
import org.eclipse.gef.editparts.ZoomManager; |
Lines 31-36
Link Here
|
31 |
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; |
32 |
import org.eclipse.gmf.runtime.diagram.core.preferences.PreferencesHint; |
32 |
import org.eclipse.gmf.runtime.diagram.ui.DiagramUIPlugin; |
33 |
import org.eclipse.gmf.runtime.diagram.ui.DiagramUIPlugin; |
33 |
import org.eclipse.gmf.runtime.diagram.ui.DiagramUIStatusCodes; |
34 |
import org.eclipse.gmf.runtime.diagram.ui.DiagramUIStatusCodes; |
|
|
35 |
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.GridLayerEx; |
34 |
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.PageBreakEditPart; |
36 |
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.PageBreakEditPart; |
35 |
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.ZoomableEditPart; |
37 |
import org.eclipse.gmf.runtime.diagram.ui.internal.editparts.ZoomableEditPart; |
36 |
import org.eclipse.gmf.runtime.diagram.ui.internal.figures.PageBreaksFigure; |
38 |
import org.eclipse.gmf.runtime.diagram.ui.internal.figures.PageBreaksFigure; |
Lines 40-45
Link Here
|
40 |
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer; |
42 |
import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramGraphicalViewer; |
41 |
import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; |
43 |
import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants; |
42 |
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; |
44 |
import org.eclipse.gmf.runtime.diagram.ui.requests.RequestConstants; |
|
|
45 |
import org.eclipse.gmf.runtime.draw2d.ui.figures.FigureUtilities; |
43 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.ConnectionLayerEx; |
46 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.ConnectionLayerEx; |
44 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScaledGraphics; |
47 |
import org.eclipse.gmf.runtime.draw2d.ui.internal.graphics.ScaledGraphics; |
45 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; |
48 |
import org.eclipse.gmf.runtime.draw2d.ui.mapmode.IMapMode; |
Lines 47-52
Link Here
|
47 |
import org.eclipse.gmf.runtime.gef.ui.internal.editparts.AnimatableZoomManager; |
50 |
import org.eclipse.gmf.runtime.gef.ui.internal.editparts.AnimatableZoomManager; |
48 |
import org.eclipse.jface.preference.IPreferenceStore; |
51 |
import org.eclipse.jface.preference.IPreferenceStore; |
49 |
import org.eclipse.jface.util.IPropertyChangeListener; |
52 |
import org.eclipse.jface.util.IPropertyChangeListener; |
|
|
53 |
import org.eclipse.swt.SWT; |
54 |
import org.eclipse.swt.graphics.Color; |
50 |
import org.eclipse.swt.widgets.Display; |
55 |
import org.eclipse.swt.widgets.Display; |
51 |
|
56 |
|
52 |
/** |
57 |
/** |
Lines 58-64
Link Here
|
58 |
public class DiagramRootEditPart |
63 |
public class DiagramRootEditPart |
59 |
extends ScalableFreeformRootEditPart |
64 |
extends ScalableFreeformRootEditPart |
60 |
implements ZoomableEditPart, IDiagramPreferenceSupport { |
65 |
implements ZoomableEditPart, IDiagramPreferenceSupport { |
61 |
|
66 |
|
62 |
/** |
67 |
/** |
63 |
* GEF does not scale the FEEDBACK_LAYER but we do. |
68 |
* GEF does not scale the FEEDBACK_LAYER but we do. |
64 |
*/ |
69 |
*/ |
Lines 112-117
Link Here
|
112 |
* the {@link DiagramPreferencesRegistry}. |
117 |
* the {@link DiagramPreferencesRegistry}. |
113 |
*/ |
118 |
*/ |
114 |
private PreferencesHint preferencesHint = PreferencesHint.USE_DEFAULTS; |
119 |
private PreferencesHint preferencesHint = PreferencesHint.USE_DEFAULTS; |
|
|
120 |
private int printableLayerIndex; |
121 |
private GridLayer gridLayer; |
115 |
|
122 |
|
116 |
/** |
123 |
/** |
117 |
* Initializes the preferenceStore property change |
124 |
* Initializes the preferenceStore property change |
Lines 162-178
Link Here
|
162 |
return layeredPane; |
169 |
return layeredPane; |
163 |
} |
170 |
} |
164 |
|
171 |
|
|
|
172 |
protected void moveGridLayer(boolean inFront) { |
173 |
if (layers.getChildren().indexOf(gridLayer) > printableLayerIndex && (! inFront)) { |
174 |
layers.remove(gridLayer); |
175 |
layers.add(gridLayer,GRID_LAYER, printableLayerIndex); |
176 |
} else if (layers.getChildren().indexOf(gridLayer) <= printableLayerIndex && inFront) { |
177 |
layers.remove(gridLayer); |
178 |
layers.add(gridLayer,GRID_LAYER, printableLayerIndex+1); |
179 |
} |
180 |
} |
181 |
|
165 |
/** |
182 |
/** |
166 |
* Creates and returns the scalable layers of this EditPart |
183 |
* Creates and returns the scalable layers of this EditPart |
167 |
* |
184 |
* |
168 |
* @return ScalableFreeformLayeredPane Pane that contains the scalable layers |
185 |
* @return ScalableFreeformLayeredPane Pane that contains the scalable layers |
169 |
*/ |
186 |
*/ |
170 |
protected ScalableFreeformLayeredPane createScaledLayers() { |
187 |
protected ScalableFreeformLayeredPane createScaledLayers() { |
171 |
layers = createScalableFreeformLayeredPane(); |
188 |
|
|
|
189 |
layers = createScalableFreeformLayeredPane(); |
172 |
|
190 |
|
173 |
layers.add(createGridLayer(), GRID_LAYER); |
|
|
174 |
layers.add(new FreeformLayer(), PAGE_BREAKS_LAYER); |
191 |
layers.add(new FreeformLayer(), PAGE_BREAKS_LAYER); |
|
|
192 |
printableLayerIndex = layers.getChildren().size(); |
175 |
layers.add(getPrintableLayers(), PRINTABLE_LAYERS); |
193 |
layers.add(getPrintableLayers(), PRINTABLE_LAYERS); |
|
|
194 |
|
195 |
gridLayer = createGridLayer(); |
196 |
|
197 |
layers.add(gridLayer, GRID_LAYER); |
198 |
|
176 |
layers.add(new FreeformLayer(), DECORATION_UNPRINTABLE_LAYER); |
199 |
layers.add(new FreeformLayer(), DECORATION_UNPRINTABLE_LAYER); |
177 |
return layers; |
200 |
return layers; |
178 |
} |
201 |
} |
Lines 247-253
Link Here
|
247 |
* @return PreferenceStore the workspace viewer preference store |
270 |
* @return PreferenceStore the workspace viewer preference store |
248 |
*/ |
271 |
*/ |
249 |
protected IPreferenceStore getWorkspaceViewerPreferences() { |
272 |
protected IPreferenceStore getWorkspaceViewerPreferences() { |
250 |
return ((DiagramGraphicalViewer) getViewer()) |
273 |
if (getViewer() == null) return null; |
|
|
274 |
return ((DiagramGraphicalViewer) getViewer()) |
251 |
.getWorkspaceViewerPreferenceStore(); |
275 |
.getWorkspaceViewerPreferenceStore(); |
252 |
} |
276 |
} |
253 |
|
277 |
|
Lines 258-265
Link Here
|
258 |
* @return grid spacing value. |
282 |
* @return grid spacing value. |
259 |
*/ |
283 |
*/ |
260 |
public double getGridSpacing() { |
284 |
public double getGridSpacing() { |
261 |
IPreferenceStore pluginStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); |
285 |
|
262 |
return pluginStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING); |
286 |
// Check the workspace properties |
|
|
287 |
double gridSpacing = getWorkspaceViewerPreferences().getDouble(WorkspaceViewerProperties.GRIDSPACING); |
288 |
|
289 |
// If the workspace property is not set then get the global preference value |
290 |
if (gridSpacing == 0) { |
291 |
IPreferenceStore pluginStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); |
292 |
gridSpacing = pluginStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING); |
293 |
} |
294 |
return gridSpacing; |
295 |
} |
296 |
|
297 |
/** |
298 |
* Sets the grid line style. |
299 |
* @param color |
300 |
* |
301 |
* @param style |
302 |
*/ |
303 |
public void setGridStyle(int style) { |
304 |
if (gridLayer instanceof GridLayerEx) { |
305 |
((GridLayerEx) gridLayer).setLineStyle(style); |
306 |
} |
307 |
gridLayer.repaint(); |
308 |
} |
309 |
|
310 |
|
311 |
/** |
312 |
* Sets the grid line color. |
313 |
* @param color |
314 |
* |
315 |
* @param gridSpacing |
316 |
*/ |
317 |
public void setGridColor(Integer rgbValue) { |
318 |
gridLayer.setForegroundColor(FigureUtilities.integerToColor(rgbValue)); |
263 |
} |
319 |
} |
264 |
|
320 |
|
265 |
/** |
321 |
/** |
Lines 270-285
Link Here
|
270 |
*/ |
326 |
*/ |
271 |
public void setGridSpacing(double gridSpacing) { |
327 |
public void setGridSpacing(double gridSpacing) { |
272 |
|
328 |
|
273 |
// Get the Ruler Units from the Plug-in Preference Store |
329 |
int rulerUnits = getWorkspaceViewerPreferences().getInt(WorkspaceViewerProperties.RULERUNIT); |
274 |
IPreferenceStore preferenceStore = (IPreferenceStore) getPreferencesHint().getPreferenceStore(); |
330 |
|
275 |
int rulerUnits = preferenceStore.getInt(IPreferenceConstants.PREF_RULER_UNITS); |
|
|
276 |
|
277 |
// Get the Displays DPIs |
331 |
// Get the Displays DPIs |
278 |
double dotsPerInch = Display.getDefault().getDPI().x; |
332 |
double dotsPerInch = Display.getDefault().getDPI().x; |
279 |
int spacingInPixels = 0; |
333 |
int spacingInPixels = 0; |
280 |
|
334 |
|
281 |
// Evaluate the Grid Spacing based on the ruler units |
335 |
// Evaluate the Grid Spacing based on the ruler units |
282 |
switch( rulerUnits ) { |
336 |
switch( rulerUnits) { |
283 |
case RulerProvider.UNIT_INCHES: |
337 |
case RulerProvider.UNIT_INCHES: |
284 |
spacingInPixels = (int)Math.round(dotsPerInch * gridSpacing); |
338 |
spacingInPixels = (int)Math.round(dotsPerInch * gridSpacing); |
285 |
break; |
339 |
break; |
Lines 360-381
Link Here
|
360 |
} else if (isPageSizeChange(event.getProperty())) { |
414 |
} else if (isPageSizeChange(event.getProperty())) { |
361 |
getPageBreakEditPart().calculatePageBreakFigureBounds(false); |
415 |
getPageBreakEditPart().calculatePageBreakFigureBounds(false); |
362 |
refreshPageBreaks(); |
416 |
refreshPageBreaks(); |
363 |
} else if (WorkspaceViewerProperties.VIEWGRID.equals(event.getProperty())) { |
417 |
} else if (WorkspaceViewerProperties.VIEWGRID.equals(event.getProperty())) { |
364 |
|
|
|
365 |
// Set the state of the Grid Enabled Property |
418 |
// Set the state of the Grid Enabled Property |
366 |
getViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, |
419 |
getViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE, event.getNewValue()); |
367 |
event.getNewValue()); |
420 |
} else if (WorkspaceViewerProperties.SNAPTOGRID.equals(event.getProperty())) { |
368 |
} else if (WorkspaceViewerProperties.SNAPTOGRID.equals(event.getProperty())) { |
|
|
369 |
|
370 |
// Set the state of the Snap to Grid Property |
421 |
// Set the state of the Snap to Grid Property |
371 |
getViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, |
422 |
getViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED, event.getNewValue()); |
372 |
event.getNewValue()); |
423 |
} else if (WorkspaceViewerProperties.GRIDORDER.equals(event.getProperty())) { |
373 |
} else if (WorkspaceViewerProperties.VIEWRULERS.equals(event.getProperty())) { |
424 |
// Set the grid level |
374 |
|
425 |
moveGridLayer(((Boolean) event.getNewValue()).booleanValue()); |
|
|
426 |
} else if (WorkspaceViewerProperties.GRIDSPACING.equals(event.getProperty())) { |
427 |
// Set the grid spacing |
428 |
Double spacing = (Double) event.getNewValue(); |
429 |
setGridSpacing(spacing.doubleValue()); |
430 |
} else if (WorkspaceViewerProperties.VIEWRULERS.equals(event.getProperty())) { |
375 |
// Set the state of the Ruler Enabled Property |
431 |
// Set the state of the Ruler Enabled Property |
376 |
getViewer().setProperty(RulerProvider.PROPERTY_RULER_VISIBILITY, |
432 |
getViewer().setProperty(RulerProvider.PROPERTY_RULER_VISIBILITY, |
377 |
event.getNewValue()); |
433 |
event.getNewValue()); |
378 |
} else if (IPreferenceConstants.PREF_RULER_UNITS.equals(event.getProperty())) { |
434 |
} else if (WorkspaceViewerProperties.RULERUNIT.equals(event.getProperty())) { |
379 |
Object newValue = event.getNewValue(); |
435 |
Object newValue = event.getNewValue(); |
380 |
int rulerUnits; |
436 |
int rulerUnits; |
381 |
|
437 |
|
Lines 388-397
Link Here
|
388 |
setRulers(rulerUnits); |
444 |
setRulers(rulerUnits); |
389 |
} catch (NumberFormatException e) { |
445 |
} catch (NumberFormatException e) { |
390 |
Log.error( DiagramUIPlugin.getInstance(), |
446 |
Log.error( DiagramUIPlugin.getInstance(), |
391 |
DiagramUIStatusCodes.RESOURCE_FAILURE, |
447 |
DiagramUIStatusCodes.RESOURCE_FAILURE, e.toString() ); |
392 |
e.toString() ); |
448 |
} |
393 |
} |
|
|
394 |
|
395 |
} else { |
449 |
} else { |
396 |
Log.error( DiagramUIPlugin.getInstance(), |
450 |
Log.error( DiagramUIPlugin.getInstance(), |
397 |
DiagramUIStatusCodes.RESOURCE_FAILURE, |
451 |
DiagramUIStatusCodes.RESOURCE_FAILURE, |
Lines 407-432
Link Here
|
407 |
double spacing = getGridSpacing(); |
461 |
double spacing = getGridSpacing(); |
408 |
setGridSpacing(spacing); |
462 |
setGridSpacing(spacing); |
409 |
|
463 |
|
410 |
} else if (IPreferenceConstants.PREF_GRID_SPACING.equals(event.getProperty())) { |
464 |
} else if (WorkspaceViewerProperties.GRIDLINECOLOR.equals(event.getProperty())) { |
411 |
Object newValue = event.getNewValue(); |
465 |
Integer newValue = (Integer) event.getNewValue(); |
412 |
double gridSpacing; |
466 |
// Set the grid line color |
413 |
try { |
467 |
setGridColor(newValue); |
414 |
if (newValue.getClass() == Double.class) { |
468 |
} else if (WorkspaceViewerProperties.GRIDLINESTYLE.equals(event.getProperty())) { |
415 |
gridSpacing = ((Double) newValue).doubleValue(); |
469 |
Integer newValue = (Integer) event.getNewValue(); |
416 |
setGridSpacing(gridSpacing); |
470 |
// Set the grid line style |
417 |
} else if (newValue.getClass() == String.class) { |
471 |
setGridStyle(newValue.intValue()); |
418 |
gridSpacing = Double.parseDouble((String) newValue); |
|
|
419 |
setGridSpacing(gridSpacing); |
420 |
} else { |
421 |
Log.error( DiagramUIPlugin.getInstance(), |
422 |
DiagramUIStatusCodes.RESOURCE_FAILURE, |
423 |
newValue.getClass().getName()); |
424 |
} |
425 |
} catch (NumberFormatException ex ) { |
426 |
Log.error( DiagramUIPlugin.getInstance(), |
427 |
DiagramUIStatusCodes.RESOURCE_FAILURE, |
428 |
ex.toString() ); |
429 |
} |
430 |
} else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANIMATED_ZOOM)){ |
472 |
} else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANIMATED_ZOOM)){ |
431 |
refreshEnableZoomAnimation(getZoomManager()); |
473 |
refreshEnableZoomAnimation(getZoomManager()); |
432 |
} else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANTIALIAS)){ |
474 |
} else if (event.getProperty().equals(IPreferenceConstants.PREF_ENABLE_ANTIALIAS)){ |
Lines 485-495
Link Here
|
485 |
* Refreshes ruler units on the diagram |
527 |
* Refreshes ruler units on the diagram |
486 |
*/ |
528 |
*/ |
487 |
protected void refreshRulerUnits() { |
529 |
protected void refreshRulerUnits() { |
488 |
IPreferenceStore preferenceStore = |
530 |
setRulers(getWorkspaceViewerPreferences().getInt(WorkspaceViewerProperties.RULERUNIT)); |
489 |
(IPreferenceStore) getPreferencesHint().getPreferenceStore(); |
|
|
490 |
int rulerUnits = preferenceStore.getInt( |
491 |
IPreferenceConstants.PREF_RULER_UNITS); |
492 |
setRulers(rulerUnits); |
493 |
} |
531 |
} |
494 |
|
532 |
|
495 |
/** |
533 |
/** |
Lines 517-522
Link Here
|
517 |
|
555 |
|
518 |
refreshEnableAntiAlias(); |
556 |
refreshEnableAntiAlias(); |
519 |
|
557 |
|
|
|
558 |
initWorkspaceViewerProperties(); |
559 |
|
520 |
refreshRulerUnits(); |
560 |
refreshRulerUnits(); |
521 |
|
561 |
|
522 |
if (pane instanceof ZoomListener) { |
562 |
if (pane instanceof ZoomListener) { |
Lines 524-529
Link Here
|
524 |
} |
564 |
} |
525 |
} |
565 |
} |
526 |
|
566 |
|
|
|
567 |
private static final int LIGHT_GRAY_RGB = 12632256; |
568 |
|
569 |
/** |
570 |
* Initializes the workspace viewer property that are stored per diagram |
571 |
*/ |
572 |
private void initWorkspaceViewerProperties() { |
573 |
IPreferenceStore wsPrefStore = getWorkspaceViewerPreferences(); |
574 |
|
575 |
if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDORDER)) { |
576 |
wsPrefStore.setValue(WorkspaceViewerProperties.GRIDORDER, true); |
577 |
} |
578 |
if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDLINECOLOR)) { |
579 |
wsPrefStore.setValue(WorkspaceViewerProperties.GRIDLINECOLOR, LIGHT_GRAY_RGB); |
580 |
} else { |
581 |
setGridColor(new Integer(wsPrefStore.getInt(WorkspaceViewerProperties.GRIDLINECOLOR))); |
582 |
} |
583 |
if (! wsPrefStore.contains(WorkspaceViewerProperties.GRIDLINESTYLE)) { |
584 |
wsPrefStore.setValue(WorkspaceViewerProperties.GRIDLINESTYLE, SWT.LINE_DOT); |
585 |
} else { |
586 |
setGridStyle(wsPrefStore.getInt(WorkspaceViewerProperties.GRIDLINESTYLE)); |
587 |
} |
588 |
|
589 |
if ((! wsPrefStore.contains(WorkspaceViewerProperties.RULERUNIT)) || |
590 |
(! wsPrefStore.contains(WorkspaceViewerProperties.GRIDSPACING))) { |
591 |
IPreferenceStore preferenceStore = |
592 |
(IPreferenceStore) getPreferencesHint().getPreferenceStore(); |
593 |
wsPrefStore.setValue(WorkspaceViewerProperties.RULERUNIT, preferenceStore.getInt(IPreferenceConstants.PREF_RULER_UNITS)); |
594 |
wsPrefStore.setValue(WorkspaceViewerProperties.GRIDSPACING, preferenceStore.getDouble(IPreferenceConstants.PREF_GRID_SPACING)); |
595 |
} |
596 |
} |
597 |
|
527 |
/** |
598 |
/** |
528 |
* |
599 |
* |
529 |
*/ |
600 |
*/ |
Lines 622-625
Link Here
|
622 |
this.verticalRuler = verticalRuler; |
693 |
this.verticalRuler = verticalRuler; |
623 |
} |
694 |
} |
624 |
|
695 |
|
|
|
696 |
protected GridLayer createGridLayer() { |
697 |
return new GridLayerEx(); |
698 |
} |
699 |
|
700 |
protected GridLayer createGridLayer(int r, int g, int b) { |
701 |
return new GridLayerEx(new Color(null,r,g,b)); |
702 |
} |
703 |
|
625 |
} |
704 |
} |