|
From: <nr...@us...> - 2011-07-18 14:42:02
|
Revision: 15690
http://dcm4che.svn.sourceforge.net/dcm4che/?rev=15690&view=rev
Author: nroduit
Date: 2011-07-18 14:41:55 +0000 (Mon, 18 Jul 2011)
Log Message:
-----------
cut, copy and paste drawings
Modified Paths:
--------------
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/editor/image/MeasureToolBar.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/Graphic.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java
weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/GraphicsPane.java
weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/View2d.java
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/editor/image/MeasureToolBar.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/editor/image/MeasureToolBar.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/editor/image/MeasureToolBar.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -125,7 +125,7 @@
if (model.getSelectedGraphics().size() == 0) {
model.setSelectedGraphics(model.getdAllGraphics());
}
- model.deleteSelectedGraphics();
+ model.deleteSelectedGraphics(true);
}
}
});
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/AbstractDragGraphic.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -39,6 +39,7 @@
import org.weasis.core.api.media.data.ImageElement;
import org.weasis.core.ui.editor.image.DefaultView2d;
import org.weasis.core.ui.graphic.AbstractDragGraphic.AdvancedShape.BasicShape;
+import org.weasis.core.ui.graphic.model.Tools;
import org.weasis.core.ui.util.MouseEventDouble;
/**
@@ -47,7 +48,7 @@
* @author Nicolas Roduit,Benoit Jacquemoud
*/
-public abstract class AbstractDragGraphic implements Graphic, Cloneable {
+public abstract class AbstractDragGraphic implements Graphic {
protected static final Logger logger = LoggerFactory.getLogger(AbstractDragGraphic.class);
@@ -70,6 +71,8 @@
protected boolean selected = false;
protected boolean resizingOrMoving = false;
+ private int layerID = Tools.TEMPDRAGLAYER.getId();
+
// TODO none are transient and should be if serialized
// /////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -926,6 +929,16 @@
}
}
+ @Override
+ public int getLayerID() {
+ return layerID;
+ }
+
+ @Override
+ public void setLayerID(int layerID) {
+ this.layerID = layerID;
+ }
+
// /////////////////////////////////////////////////////////////////////////////////////////////////////
protected void fireDrawingChanged() {
@@ -996,7 +1009,6 @@
newGraphic.pcs = null;
newGraphic.shape = null;
newGraphic.handlePointList = new ArrayList<Point2D>(handlePointTotalNumber > 0 ? handlePointTotalNumber : 10);
- // newGraphic.paintColor = paintColor; // useless
newGraphic.graphicLabel = null;
newGraphic.selected = false;
@@ -1005,11 +1017,33 @@
public Graphic clone(double xPos, double yPos) {
AbstractDragGraphic graphic = (AbstractDragGraphic) clone();
+ if (graphic == null)
+ return null;
graphic.setShape(new Rectangle2D.Double(xPos, yPos, 0, 0), null); // needed for selection check when used after
// drag
return graphic;
};
+ @Override
+ public Graphic deepCopy() {
+ AbstractDragGraphic newGraphic = null;
+ try {
+ newGraphic = (AbstractDragGraphic) super.clone();
+ } catch (CloneNotSupportedException clonenotsupportedexception) {
+ return null;
+ }
+ newGraphic.pcs = null;
+ newGraphic.shape = null;
+ newGraphic.handlePointList = new ArrayList<Point2D>(handlePointList.size());
+ for (Point2D p : handlePointList) {
+ newGraphic.handlePointList.add((Point2D) p.clone());
+ }
+ newGraphic.graphicLabel = null;
+ newGraphic.selected = false;
+ newGraphic.updateShapeOnDrawing(null);
+ return newGraphic;
+ };
+
// /////////////////////////////////////////////////////////////////////////////////////////////////////
protected int moveAndResizeOnDrawing(int handlePointIndex, double deltaX, double deltaY, MouseEventDouble mouseEvent) {
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/Graphic.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/Graphic.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/Graphic.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -27,8 +27,10 @@
*
* @author Nicolas Roduit
*/
-public interface Graphic extends GUIEntry {
+public interface Graphic extends GUIEntry, Cloneable {
+ public Graphic deepCopy();
+
@Deprecated
public Area getArea();
@@ -75,6 +77,10 @@
public void toBack();
+ public void setLayerID(int layerID);
+
+ public int getLayerID();
+
public Shape getShape();
public Rectangle getTransformedBounds(Shape shape, AffineTransform transform);
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayer.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -70,20 +70,10 @@
} else if ("toBack".equals(s)) { //$NON-NLS-1$
toBack(graph);
}
- // pour toutes les autres propriétés des graphic : "selected", "shape", "intersectshape"
- else {
- // if (obj instanceof AbstractDragGraphic) {
- // repaint(((AbstractDragGraphic) obj).getRepaintBounds());
- // }
- // else {
- // repaint(((Graphic) obj).getRepaintBounds());
- // }
- }
}
+
}
- // version 1.0 n'avait pas de UID
- // protected static final long serialVersionUID = -9094820911680205527L;
private static final long serialVersionUID = -9094820911680205527L;
private PropertyChangeHandler() {
@@ -101,6 +91,7 @@
if (graphics != null && !graphics.contains(graphic)) {
// graphic.setSelected(false);
graphics.add(graphic);
+ graphic.setLayerID(drawType);
graphic.addPropertyChangeListener(pcl);
ArrayList<AbstractLayer> layers = graphics.getLayers();
if (layers != null) {
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/AbstractLayerModel.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -48,8 +48,8 @@
public static final GraphicClipboard GraphicClipboard = new GraphicClipboard();
private static final SelectGraphic selectGraphic = new SelectGraphic();
public static final Cursor DEFAULT_CURSOR = new Cursor(Cursor.DEFAULT_CURSOR);
- public static final Cursor HAND_CURSOR = getCustomCursor("hand.gif", "hand", 16, 16); //$NON-NLS-1$ //$NON-NLS-2$
-// public static final Cursor HAND_CURSOR = new Cursor(Cursor.HAND_CURSOR);
+ public static final Cursor HAND_CURSOR = getCustomCursor("hand.gif", "hand", 16, 16); //$NON-NLS-1$ //$NON-NLS-2$
+ // public static final Cursor HAND_CURSOR = new Cursor(Cursor.HAND_CURSOR);
public static final Cursor EDIT_CURSOR = getCustomCursor("editpoint.png", "Edit Point", 16, 16); //$NON-NLS-1$ //$NON-NLS-2$
public static final Cursor MOVE_CURSOR = new Cursor(Cursor.MOVE_CURSOR);
@@ -349,15 +349,18 @@
}
}
- public void deleteSelectedGraphics() {
+ public void deleteSelectedGraphics(boolean warningMessage) {
java.util.List<Graphic> list = getSelectedGraphics();
if (list != null && list.size() > 0) {
- int response =
- JOptionPane
- .showConfirmDialog(
- canvas,
- String.format(Messages.getString("AbstractLayerModel.del_conf"), list.size()), Messages.getString("AbstractLayerModel.del_graphs"), //$NON-NLS-1$ //$NON-NLS-2$
- JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+ int response = 0;
+ if (warningMessage) {
+ response =
+ JOptionPane
+ .showConfirmDialog(
+ canvas,
+ String.format(Messages.getString("AbstractLayerModel.del_conf"), list.size()), Messages.getString("AbstractLayerModel.del_graphs"), //$NON-NLS-1$ //$NON-NLS-2$
+ JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
+ }
if (response == 0) {
java.util.List<Graphic> selectionList = new ArrayList<Graphic>(list);
for (Graphic graphic : selectionList) {
Modified: weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/GraphicsPane.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/GraphicsPane.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-core/weasis-core-ui/src/main/java/org/weasis/core/ui/graphic/model/GraphicsPane.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -304,7 +304,7 @@
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DELETE) {
- layerModel.deleteSelectedGraphics();
+ layerModel.deleteSelectedGraphics(true);
}
// FIXME arrows is already used with pan!
// else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
Modified: weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/View2d.java
===================================================================
--- weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/View2d.java 2011-07-18 07:15:36 UTC (rev 15689)
+++ weasis/weasis_framework/trunk/weasis-dicom/weasis-dicom-viewer2d/src/main/java/org/weasis/dicom/viewer2d/View2d.java 2011-07-18 14:41:55 UTC (rev 15690)
@@ -25,6 +25,7 @@
import java.awt.event.InputEvent;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;
+import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeEvent;
import java.io.File;
import java.util.ArrayList;
@@ -651,30 +652,30 @@
@Override
public void actionPerformed(ActionEvent e) {
- View2d.this.getLayerModel().deleteSelectedGraphics();
+ View2d.this.getLayerModel().deleteSelectedGraphics(true);
}
});
popupMenu.add(menuItem);
- // menuItem = new JMenuItem("Cut");
- // menuItem.addActionListener(new ActionListener() {
- //
- // @Override
- // public void actionPerformed(ActionEvent e) {
- // AbstractLayerModel.GraphicClipboard.setGraphics(selected);
- // View2d.this.getLayerModel().deleteSelectedGraphics();
- // }
- // });
- // popupMenu.add(menuItem);
- // menuItem = new JMenuItem("Copy");
- // menuItem.addActionListener(new ActionListener() {
- //
- // @Override
- // public void actionPerformed(ActionEvent e) {
- // AbstractLayerModel.GraphicClipboard.setGraphics(selected);
- // }
- // });
- // popupMenu.add(menuItem);
+ menuItem = new JMenuItem("Cut");
+ menuItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ AbstractLayerModel.GraphicClipboard.setGraphics(selected);
+ View2d.this.getLayerModel().deleteSelectedGraphics(false);
+ }
+ });
+ popupMenu.add(menuItem);
+ menuItem = new JMenuItem("Copy");
+ menuItem.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ AbstractLayerModel.GraphicClipboard.setGraphics(selected);
+ }
+ });
+ popupMenu.add(menuItem);
+
// TODO separate AbstractDragGraphic and ClassGraphic for properties
final ArrayList<AbstractDragGraphic> list = new ArrayList<AbstractDragGraphic>();
for (Graphic graphic : selected) {
@@ -804,6 +805,44 @@
}
}
}
+ if (AbstractLayerModel.GraphicClipboard.getGraphics() != null) {
+ popupMenu.add(new JSeparator());
+ JMenuItem menuItem = new JMenuItem("Paste Drawings");
+ menuItem.addActionListener(new ActionListener() {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ List<Graphic> graphs = AbstractLayerModel.GraphicClipboard.getGraphics();
+ if (graphs != null) {
+ Rectangle2D area = View2d.this.getViewModel().getModelArea();
+ for (Graphic g : graphs) {
+ if (!g.getBounds(null).intersects(area)) {
+ int option =
+ JOptionPane
+ .showConfirmDialog(View2d.this,
+ "At least one graphic is outside the image.\n Do you want to continue?"); //$NON-NLS-1$
+ if (option != JOptionPane.YES_OPTION)
+ return;
+ else {
+ break;
+ }
+ }
+ }
+ for (Graphic g : graphs) {
+ AbstractLayer layer = View2d.this.getLayerModel().getLayer(g.getLayerID());
+ if (layer != null) {
+ Graphic graph = g.deepCopy();
+ if (graph != null) {
+ graph.updateLabel(getImage(), View2d.this);
+ layer.addGraphic(graph);
+ }
+ }
+ }
+ }
+ }
+ });
+ popupMenu.add(menuItem);
+ }
popupMenu.add(new JSeparator());
ActionState viewingAction = eventManager.getAction(ActionW.VIEWINGPROTOCOL);
if (viewingAction instanceof ComboItemListener) {
@@ -878,29 +917,6 @@
}
popupMenu.add(menu);
}
- // if (AbstractLayerModel.GraphicClipboard.getGraphics() != null) {
- // popupMenu.add(new JSeparator());
- // JMenuItem menuItem = new JMenuItem("Paste Drawings");
- // menuItem.addActionListener(new ActionListener() {
- //
- // @Override
- // public void actionPerformed(ActionEvent e) {
- // AbstractLayer layer = View2d.this.getLayerModel().getLayer(Tools.MEASURE.getId());
- // if (layer != null) {
- // List<Graphic> graphs = AbstractLayerModel.GraphicClipboard.getGraphics();
- // if (graphs != null) {
- // Rectangle2D area = View2d.this.getViewModel().getModelArea();
- // for (Graphic g : graphs) {
- // if (g.getBounds(null).intersects(area)) {
- // layer.addGraphic(g);
- // }
- // }
- // }
- // }
- // }
- // });
- // popupMenu.add(menuItem);
- // }
popupMenu.add(new JSeparator());
popupMenu.add(ResetTools.createUnregisteredJMenu());
JMenuItem close = new JMenuItem(Messages.getString("View2d.close")); //$NON-NLS-1$
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|