re Bug 571792: Replaced deprecated Observable object. Still looking for the race condition that interferes with map update. Signed-off-by: James Kaufman <jhkauf@us.ibm.com>
diff --git a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapCanvas.java b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapCanvas.java index a1177f1..12f22e5 100644 --- a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapCanvas.java +++ b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapCanvas.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2021 * IBM Corporation, BfR, and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 @@ -16,13 +16,18 @@ import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.beans.PropertyChangeEvent; + import java.text.NumberFormat; import java.text.ParseException; import java.util.ArrayList; import java.util.ConcurrentModificationException; import java.util.List; -import java.util.Observable; -import java.util.Observer; + +//import java.util.Observable; +//import java.util.Observer; import java.util.concurrent.CopyOnWriteArrayList; import javax.swing.text.NumberFormatter; @@ -33,7 +38,6 @@ import org.eclipse.jface.action.Separator; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; @@ -160,20 +164,28 @@ private Image canvasImage; private volatile GraphMapView view; private volatile GraphMapControl ctrl; + private static String mapPropertyName = "graphMapScaleFactor"; - private Observable paneChangeSubject; + //private Observable paneChangeSubject; + + /*Changing paneChangeSubject from Observable to PropertyChangeSupport*/ + private PropertyChangeSupport paneChangeSubject; public GraphMapCanvas(Composite parent, int style, GraphMapView view) { super(parent, SWT.DOUBLE_BUFFERED | SWT.NO_BACKGROUND); this.ctrl = (GraphMapControl) parent; - this.paneChangeSubject = new Observable() { - @Override - public void notifyObservers(Object arg) { - super.setChanged(); - super.notifyObservers(arg); - } - }; + this.paneChangeSubject = new PropertyChangeSupport(this) { + + private static final long serialVersionUID = -55036425306354436L; + + /*commenting this out as Observable is deprecated*/ + /* + * @Override public void notifyObservers(Object arg) { super. setChanged(); + * super.notifyObservers(arg); } + */ + }; + drawPolygonBorders = INITIAL_DRAW_POLYGON_BORDERS; useLogScaling = INITIAL_USE_LOG_SCALING; @@ -199,8 +211,14 @@ stdColorProvider = new StandardColorProvider(this.getDisplay()); selectionChangedListeners = new CopyOnWriteArrayList<ISelectionChangedListener>(); - Activator.getDefault().getPreferenceStore() - .addPropertyChangeListener(this); + + + Activator.getDefault().getPreferenceStore().addPropertyChangeListener(this); + + + + + this.view = view; } @@ -250,9 +268,15 @@ double relTransX = cCX - translationX; double relTransY = cCY - translationY; - // fire pane change event - this.paneChangeSubject.notifyObservers(new PaneChangeEvent(scaleX, // this.scaleFactor, - relTransX, relTransY)); + double[] mapScale = {scaleX,relTransX,relTransY}; + + // fire pane change event using notifyObservers + //this.paneChangeSubject.notifyObservers(new PaneChangeEvent(scaleX, relTransX, relTransY)); + + PropertyChangeEvent evt = new PropertyChangeEvent (this, mapPropertyName, null, mapScale); + //fire pane change event using firePropertyChange in PropertyChangeSupport + this.paneChangeSubject.firePropertyChange(evt); + for (StemPolygon stempoly : polygonsToRender) { stempoly.computeTransformedPoints(translationX, translationY, scaleX, scaleY); @@ -531,7 +555,6 @@ transformationChanged = true; } - @Override public void propertyChange(PropertyChangeEvent event) { if (!isDisposed()) { redraw(); @@ -560,12 +583,12 @@ fireSelection(selection); } - public void addPaneChangeListener(Observer listener) { - this.paneChangeSubject.addObserver(listener); + public void addPaneChangeListener(PropertyChangeListener listener) { + this.paneChangeSubject.addPropertyChangeListener(listener); } - public void removePaneChangeListener(Observer listener) { - this.paneChangeSubject.deleteObserver(listener); + public void removePaneChangeListener(PropertyChangeListener listener) { + this.paneChangeSubject.removePropertyChangeListener(listener); } @Override @@ -1401,4 +1424,13 @@ } } + @Override + public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) { + // TODO Auto-generated method stub + + } + + + + }
diff --git a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapControl.java b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapControl.java index 8289a4a..a152bbb 100644 --- a/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapControl.java +++ b/org.eclipse.stem/core/org.eclipse.stem.ui/src/org/eclipse/stem/ui/views/graphmap/GraphMapControl.java
@@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018,2021 * IBM Corporation, BfR, and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v2.0 @@ -14,14 +14,16 @@ package org.eclipse.stem.ui.views.graphmap; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.ConcurrentModificationException; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Observable; -import java.util.Observer; +//import java.util.Observable; +//import java.util.Observer; import java.util.Set; import org.eclipse.core.runtime.IProgressMonitor; @@ -816,27 +818,51 @@ } - private class PaneChangeListener implements Observer { + private class PaneChangeListener implements PropertyChangeListener { GraphMapControl thiss; - + public PaneChangeListener(GraphMapControl ctrl) { this.thiss = ctrl; } - @Override - public void update(Observable o, Object arg) { - PaneChangeEvent e = (PaneChangeEvent) arg; - int viewId = GraphMapRegistry.getInstance().getViewId(thiss.view); - GraphMapPreferences prefs = GraphMapPreferences.getInstance(); - prefs.updatePreferenceState(viewId, thiss.getSimulation(), - PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_X, - e.getTranformationX()); - prefs.updatePreferenceState(viewId, thiss.getSimulation(), - PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_Y, - e.getTranformationY()); - prefs.updatePreferenceState(viewId, thiss.getSimulation(), - PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_SCALE_FACTOR, - e.getScaleFactor()); + public void propertyChange(PropertyChangeEvent evt) { + + double[] mapScale = (double[]) evt.getNewValue(); + double scaleX = mapScale[0]; + double relTransX = mapScale[1]; + double relTransY = mapScale[2]; + int viewId = GraphMapRegistry.getInstance().getViewId(thiss.view); + GraphMapPreferences prefs = GraphMapPreferences.getInstance(); + prefs.updatePreferenceState(viewId, thiss.getSimulation(), + PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_X, relTransX); + prefs.updatePreferenceState(viewId, thiss.getSimulation(), + PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_Y, relTransY); + prefs.updatePreferenceState(viewId, thiss.getSimulation(), + PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_SCALE_FACTOR,scaleX); + } + + + + // update method commented out since use of Observable has deprecated in Java 11 + /* + * @Override public void update(Observable o, Object arg) { PaneChangeEvent e = + * (PaneChangeEvent) arg; int viewId = + * GraphMapRegistry.getInstance().getViewId(thiss.view); GraphMapPreferences + * prefs = GraphMapPreferences.getInstance(); + * prefs.updatePreferenceState(viewId, thiss.getSimulation(), + * PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_X, e.getTranformationX()); + * prefs.updatePreferenceState(viewId, thiss.getSimulation(), + * PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_TRANS_Y, e.getTranformationY()); + * prefs.updatePreferenceState(viewId, thiss.getSimulation(), + * PreferenceConstants.GRAPHMAP_PERSISTANT_VIEW_SCALE_FACTOR, + * e.getScaleFactor()); } + */ + + + + + + } }