From ba883c45793b0bc0e2f9b1744f9bff6a0060c7a5 Mon Sep 17 00:00:00 2001 From: abranson Date: Mon, 2 Jul 2012 14:18:15 +0200 Subject: ElasticBand and associated events refactored Fixed CompActOutcome not showing when loaded Image loader refactored from kernel resource loader --- src/main/java/com/c2kernel/gui/ImageLoader.java | 68 ++++++++++++++++++++++ .../c2kernel/gui/graph/controller/ElasticBand.java | 18 ++++++ .../c2kernel/gui/graph/controller/Selection.java | 38 ++++++++++++ .../gui/graph/event/ElasticBandResizedEvent.java | 8 +++ .../gui/graph/event/ElasticBandSetEvent.java | 8 +++ .../gui/graph/event/SelectionChangedEvent.java | 10 ++++ .../gui/graph/event/SelectionMovedEvent.java | 9 +++ .../com/c2kernel/gui/graph/view/EditorToolBar.java | 2 +- .../lifecycle/desc/CompActDefOutcomeHandler.java | 3 +- 9 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/c2kernel/gui/ImageLoader.java create mode 100644 src/main/java/com/c2kernel/gui/graph/controller/ElasticBand.java create mode 100644 src/main/java/com/c2kernel/gui/graph/controller/Selection.java create mode 100644 src/main/java/com/c2kernel/gui/graph/event/ElasticBandResizedEvent.java create mode 100644 src/main/java/com/c2kernel/gui/graph/event/ElasticBandSetEvent.java create mode 100644 src/main/java/com/c2kernel/gui/graph/event/SelectionChangedEvent.java create mode 100644 src/main/java/com/c2kernel/gui/graph/event/SelectionMovedEvent.java diff --git a/src/main/java/com/c2kernel/gui/ImageLoader.java b/src/main/java/com/c2kernel/gui/ImageLoader.java new file mode 100644 index 0000000..f03e1dd --- /dev/null +++ b/src/main/java/com/c2kernel/gui/ImageLoader.java @@ -0,0 +1,68 @@ +package com.c2kernel.gui; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Hashtable; + +import javax.swing.ImageIcon; + +import com.c2kernel.common.ObjectNotFoundException; +import com.c2kernel.utils.Logger; +import com.c2kernel.utils.Resource; + +public class ImageLoader { + + static private Hashtable imgCache = new Hashtable(); + static public final ImageIcon nullImg = new ImageIcon(new byte[] { 0 }); + + /** + * Gets an image from the resource directories + * + * @param resName - filename after resources/images + * @return + */ + static public ImageIcon findImage(String resName) { + try { + for (String ns : Resource.getModuleBaseURLs().keySet()) { + try { + return getImage(ns, resName); + } catch (ObjectNotFoundException ex) { } + } + return getImage(null, resName); + } catch (ObjectNotFoundException ex) { + Logger.warning("Image '"+resName+"' not found. Using null icon"); + return nullImg; + } + } + + static public ImageIcon getImage(String ns, String resName) throws ObjectNotFoundException { + if (resName == null) + return nullImg; + + if (imgCache.containsKey(ns+'/'+resName)) { + return imgCache.get(ns+'/'+resName); + } + + URL imgLocation = null; + if (ns == null) + try { + imgLocation = Resource.getKernelResourceURL("images/"+resName); + } catch (MalformedURLException ex) { } + else + try { + imgLocation = Resource.getModuleResourceURL(ns, "images/"+resName); + } catch (MalformedURLException ex) { } + + if (imgLocation!= null) { + ImageIcon newImg = new ImageIcon(imgLocation); + + if (newImg.getIconHeight() > -1) { + imgCache.put(ns+'/'+resName, newImg); + Logger.msg(0, "Loaded "+resName+" "+newImg.getIconWidth()+"x"+newImg.getIconHeight()); + return newImg; + } + } + throw new ObjectNotFoundException(); + } + +} diff --git a/src/main/java/com/c2kernel/gui/graph/controller/ElasticBand.java b/src/main/java/com/c2kernel/gui/graph/controller/ElasticBand.java new file mode 100644 index 0000000..b458ddf --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/controller/ElasticBand.java @@ -0,0 +1,18 @@ +package com.c2kernel.gui.graph.controller; + +import com.c2kernel.graph.model.GraphPoint; + + + +public class ElasticBand +{ + public GraphPoint mFixedCorner = null; + public GraphPoint mMovingCorner = null; + + + public ElasticBand(GraphPoint fixedCorner, GraphPoint movingCorner) + { + mFixedCorner = fixedCorner; + mMovingCorner = movingCorner; + } +} diff --git a/src/main/java/com/c2kernel/gui/graph/controller/Selection.java b/src/main/java/com/c2kernel/gui/graph/controller/Selection.java new file mode 100644 index 0000000..a05ff7f --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/controller/Selection.java @@ -0,0 +1,38 @@ +package com.c2kernel.gui.graph.controller; + +import java.io.Serializable; + +import com.c2kernel.graph.model.DirectedEdge; +import com.c2kernel.graph.model.Vertex; + + + +public class Selection implements Serializable +{ + // Either a single edge can be selected or + // one or more vertices can be selected. + // It is impossible to select an edge and a + // vertex at the same time. + public DirectedEdge mEdge = null; + public Vertex[] mVertices = null; + public int mTopLeftX = 0; + public int mTopLeftY = 0; + public int mBottomRightX = 0; + public int mBottomRightY = 0; + + + public Selection(DirectedEdge edge, + Vertex[] vertices, + int topLeftX, + int topLeftY, + int bottomRightX, + int bottomRightY) + { + mEdge = edge; + mVertices = vertices; + mTopLeftX = topLeftX; + mTopLeftY = topLeftY; + mBottomRightX = bottomRightX; + mBottomRightY = bottomRightY; + } +} diff --git a/src/main/java/com/c2kernel/gui/graph/event/ElasticBandResizedEvent.java b/src/main/java/com/c2kernel/gui/graph/event/ElasticBandResizedEvent.java new file mode 100644 index 0000000..2ddfd39 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/event/ElasticBandResizedEvent.java @@ -0,0 +1,8 @@ +package com.c2kernel.gui.graph.event; + +import com.c2kernel.graph.event.GraphModelEvent; + + +public class ElasticBandResizedEvent extends GraphModelEvent +{ +} diff --git a/src/main/java/com/c2kernel/gui/graph/event/ElasticBandSetEvent.java b/src/main/java/com/c2kernel/gui/graph/event/ElasticBandSetEvent.java new file mode 100644 index 0000000..324ce80 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/event/ElasticBandSetEvent.java @@ -0,0 +1,8 @@ +package com.c2kernel.gui.graph.event; + +import com.c2kernel.graph.event.GraphModelEvent; + + +public class ElasticBandSetEvent extends GraphModelEvent +{ +} diff --git a/src/main/java/com/c2kernel/gui/graph/event/SelectionChangedEvent.java b/src/main/java/com/c2kernel/gui/graph/event/SelectionChangedEvent.java new file mode 100644 index 0000000..a6aecbb --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/event/SelectionChangedEvent.java @@ -0,0 +1,10 @@ +package com.c2kernel.gui.graph.event; + +import com.c2kernel.graph.event.GraphModelEvent; +import com.c2kernel.gui.graph.controller.Selection; + + +public class SelectionChangedEvent extends GraphModelEvent +{ + public Selection mSelection = null; +} diff --git a/src/main/java/com/c2kernel/gui/graph/event/SelectionMovedEvent.java b/src/main/java/com/c2kernel/gui/graph/event/SelectionMovedEvent.java new file mode 100644 index 0000000..ae1f840 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/graph/event/SelectionMovedEvent.java @@ -0,0 +1,9 @@ +package com.c2kernel.gui.graph.event; + +import com.c2kernel.graph.event.GraphModelEvent; + + + +public class SelectionMovedEvent extends GraphModelEvent +{ +} diff --git a/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java b/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java index b60c1ba..8892fd7 100644 --- a/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java +++ b/src/main/java/com/c2kernel/gui/graph/view/EditorToolBar.java @@ -98,7 +98,7 @@ public class EditorToolBar extends Box implements Printable mStartButton.setToolTipText(Language.translate("Select the start vertex of the graph")); mDeleteButton.setToolTipText(Language.translate("Delete the selection")); mPrintButton.setToolTipText(Language.translate("Print this graph")); - mPrintButton.setToolTipText(Language.translate("Copy an image of this graph to the clipboard")); + mCopyButton.setToolTipText(Language.translate("Copy an image of this graph to the clipboard")); // Set the button margins to 0 mVertexModeButton.setMargin(new Insets(0, 0, 0, 0)); mSelectModeButton.setMargin(new Insets(0, 0, 0, 0)); diff --git a/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java b/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java index 3c2f165..51e2939 100644 --- a/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java +++ b/src/main/java/com/c2kernel/gui/lifecycle/desc/CompActDefOutcomeHandler.java @@ -72,7 +72,7 @@ public class CompActDefOutcomeHandler protected void createLayout() { - mLoadButton.setToolTipText("Load from local disc"); + mLoadButton.setToolTipText("Load from local file"); mLayoutButton.setToolTipText("Auto-Layout"); // Add the editor pane @@ -88,6 +88,7 @@ public class CompActDefOutcomeHandler mSplitPane.setDividerSize(5); gridbag.setConstraints(mSplitPane, c); add(mSplitPane); + revalidate(); } protected void createListeners() -- cgit v1.2.3