X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.graphviz%2Fsrc%2Forg%2Fsimantics%2Fgraphviz%2Fdrawable%2FJViewer.java;h=2543a7a667429d10626e7a92fe8e507fad4ef493;hb=ad5b573b5db77a3e00429fc24e2de855bce7f48a;hp=6f972d746d4e22620e8c7328acdb8bd54c8b14ab;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/JViewer.java b/bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/JViewer.java index 6f972d746..2543a7a66 100644 --- a/bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/JViewer.java +++ b/bundles/org.simantics.graphviz/src/org/simantics/graphviz/drawable/JViewer.java @@ -33,6 +33,7 @@ import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; import java.io.File; import java.io.IOException; +import java.util.HashMap; import javax.swing.AbstractAction; import javax.swing.JFileChooser; @@ -41,6 +42,7 @@ import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileView; @@ -51,12 +53,16 @@ import org.simantics.graphviz.Graphs; * A stand alone frame that shows and makes it * possible to navigate a given Drawable. * - * @author Hannu Niemistö + * @author Hannu Niemist� */ public class JViewer extends JFrame { + private static final HashMap VIEWER_MAP = new HashMap(); + private static final long serialVersionUID = 3022682167091092801L; Drawable drawable; ViewerCanvas canvas = new ViewerCanvas(); + + private String windowName; class ViewerCanvas extends Canvas { private static final long serialVersionUID = -5330090168115281754L; @@ -205,6 +211,12 @@ public class JViewer extends JFrame { setVisible(true); } + public void updateDrawable(Drawable drawable) { + this.drawable = drawable; + canvas.fit(); + canvas.repaint(); + } + public class ExitAction extends AbstractAction { private static final long serialVersionUID = 5680421985865931443L; @@ -324,5 +336,26 @@ public class JViewer extends JFrame { return null; } } - + + public static void getOrCreateViewer(String windowName, GraphDrawable graphDrawable) { + JViewer viewer = VIEWER_MAP.get(windowName); + if(viewer == null) { + viewer = new JViewer(graphDrawable); + viewer.setTitle(windowName); + viewer.windowName = windowName; + VIEWER_MAP.put(windowName, viewer); + viewer.toFront(); + } + else { + viewer.updateDrawable(graphDrawable); + viewer.toFront(); + } + } + + @Override + public void dispose() { + if(windowName != null) + VIEWER_MAP.remove(windowName); + super.dispose(); + } }