diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 000000000..e92e96e37
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,259 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "java",
+ "name": "Current File",
+ "request": "launch",
+ "mainClass": "${file}"
+ },
+ {
+ "type": "java",
+ "name": "CIELABColorSpace",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.color.CIELABColorSpace",
+ "projectName": "jhotdraw-gui"
+ },
+ {
+ "type": "java",
+ "name": "CIELCHabColorSpace",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.color.CIELCHabColorSpace",
+ "projectName": "jhotdraw-gui"
+ },
+ {
+ "type": "java",
+ "name": "EditCanvasPanel",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.gui.action.EditCanvasPanel",
+ "projectName": "jhotdraw-gui"
+ },
+ {
+ "type": "java",
+ "name": "CIEXYChromaticityDiagram",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.color.CIEXYChromaticityDiagram",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "JMixer",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.color.JMixer",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "WheelsAndSlidersMain",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.color.WheelsAndSlidersMain",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "FontChooserMain",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.font.FontChooserMain",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "ActivityMonitorSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.ActivityMonitorSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "AnimationSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.AnimationSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "BezierDemo",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.BezierDemo",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "ConnectingFiguresSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.ConnectingFiguresSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "CreationToolSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.CreationToolSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "DefaultDOMStorableSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.DefaultDOMStorableSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "DnDMultiEditorSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.DnDMultiEditorSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "EditorSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.EditorSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "FileIconsSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.FileIconsSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "LabeledLineConnectionFigureSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.LabeledLineConnectionFigureSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "LayouterSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.LayouterSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "MovableChildFiguresSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.MovableChildFiguresSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "MovableChildFiguresSampleWithAbstractDrawingView",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.MovableChildFiguresSampleWithAbstractDrawingView",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "MovableChildFiguresSampleWithDelegatorDrawingView",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.MovableChildFiguresSampleWithDelegatorDrawingView",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "MultiEditorSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.MultiEditorSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "SVGDrawingPanelSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.SVGDrawingPanelSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "SelectionToolSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.SelectionToolSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "SmartConnectionFigureSample",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.mini.SmartConnectionFigureSample",
+ "projectName": "jhotdraw-samples-mini"
+ },
+ {
+ "type": "java",
+ "name": "Main",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.draw.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Main(1)",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.net.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "NetApplet",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.net.NetApplet",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Main(2)",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.odg.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Main(3)",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.pert.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "PertApplet",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.pert.PertApplet",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Main(4)",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.svg.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "SVGApplet",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.svg.SVGApplet",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Main(5)",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.samples.teddy.Main",
+ "projectName": "jhotdraw-samples-misc"
+ },
+ {
+ "type": "java",
+ "name": "Bezier",
+ "request": "launch",
+ "mainClass": "org.jhotdraw.geom.Bezier",
+ "projectName": "jhotdraw-utils"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/jhotdraw-actions/jhotdraw-actions.iml b/jhotdraw-actions/jhotdraw-actions.iml
index 91c16289e..cb87511cc 100644
--- a/jhotdraw-actions/jhotdraw-actions.iml
+++ b/jhotdraw-actions/jhotdraw-actions.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-actions/src/main/java/org/jhotdraw/action/window/ArrangeWindowsAction.java b/jhotdraw-actions/src/main/java/org/jhotdraw/action/window/ArrangeWindowsAction.java
index 91986deda..82a2bf954 100644
--- a/jhotdraw-actions/src/main/java/org/jhotdraw/action/window/ArrangeWindowsAction.java
+++ b/jhotdraw-actions/src/main/java/org/jhotdraw/action/window/ArrangeWindowsAction.java
@@ -10,9 +10,6 @@
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import org.jhotdraw.api.gui.Arrangeable;
-import static org.jhotdraw.api.gui.Arrangeable.Arrangement.CASCADE;
-import static org.jhotdraw.api.gui.Arrangeable.Arrangement.HORIZONTAL;
-import static org.jhotdraw.api.gui.Arrangeable.Arrangement.VERTICAL;
import org.jhotdraw.util.ResourceBundleUtil;
/**
diff --git a/jhotdraw-actions/src/main/resources/org/jhotdraw/action/Labels.properties b/jhotdraw-actions/src/main/resources/org/jhotdraw/action/Labels.properties
index 7bc447b22..2cbd941dc 100644
--- a/jhotdraw-actions/src/main/resources/org/jhotdraw/action/Labels.properties
+++ b/jhotdraw-actions/src/main/resources/org/jhotdraw/action/Labels.properties
@@ -1,198 +1,291 @@
# Sample ResourceBundle properties file
+accelerator.alt.default=Alt-
+accelerator.alt.mac=\u2387
+accelerator.alt=${accelerator.alt.[$os]}
+accelerator.altGraph.default=AltGraph-
+accelerator.altGraph=${accelerator.altGraph.[$os]}
+accelerator.control=${accelerator.ctrl.[$os]}
+accelerator.ctrl.default=Ctrl-
+accelerator.ctrl=${accelerator.ctrl.[$os]}
+accelerator.meta.default=Meta-
+accelerator.meta.mac=\u2318
+accelerator.meta.win=Windows-
+accelerator.meta=${accelerator.meta.[$os]}
+accelerator.shift.default=Shift-
+accelerator.shift.mac=\u21e7
+accelerator.shift=${accelerator.shift.[$os]}
application.about.accelerator=
-application.about.smallIcon=
application.about.largeIcon=
application.about.mnemonic.default=A
+application.about.mnemonic.mac=
+application.about.mnemonic=${application.about.mnemonic.[$os]}
+application.about.smallIcon=
application.about.text=About
application.about.toolTipText=
application.debug.accelerator=
application.debug.mnemonic.default=D
+application.debug.mnemonic.mac=
+application.debug.mnemonic=${application.debug.mnemonic.[$os]}
application.debug.text=Debug
application.exit.accelerator.default=
application.exit.accelerator.mac=meta Q
application.exit.accelerator=${application.exit.accelerator.[$os]}
-application.exit.smallIcon=
+application.exit.cancelOption=Cancel
+application.exit.discardChangesOption=Discard Changes
+application.exit.dontSaveOption=Don't Save
+application.exit.doYouWantToReview.details=If you don't review your documents, all your changes will be lost.
+application.exit.doYouWantToReview.message=You have {0} documents with unsaved changes. Do you want to review these changes before quitting?
+application.exit.doYouWantToSave.details=If you don't save, your changes will be lost.
+application.exit.doYouWantToSave.message=Do you want to save changes to the document "{0}" before exiting?
application.exit.largeIcon=${imageDir}/spacerIcon.png
application.exit.mnemonic.default=x
application.exit.mnemonic.mac=
application.exit.mnemonic=${application.exit.mnemonic.[$os]}
+application.exit.reviewChangesOption=Review Changes...
+application.exit.saveOption=Save...
+application.exit.smallIcon=
application.exit.text.default=Exit
application.exit.text.mac=Quit
application.exit.text=${application.exit.text.[$os]}
application.exit.toolTipText=
+application.preferences.accelerator=
+application.preferences.largeIcon=
+application.preferences.mnemonic=${application.preferences.mnemonic.[$os]}
+application.preferences.smallIcon=
+application.preferences.text=Preferences...
+application.preferences.toolTipText=
edit.accelerator=
edit.cancel.text=Cancel
-edit.smallIcon=
-edit.largeIcon=
edit.clearSelection.accelerator.default=shift ctrl A
edit.clearSelection.accelerator.mac=shift meta A
edit.clearSelection.accelerator=${edit.clearSelection.accelerator.[$os]}
+edit.clearSelection.icon=
+edit.clearSelection.largeIcon=
+edit.clearSelection.mnemonic.default=
edit.clearSelection.mnemonic=${edit.clearSelection.mnemonic.[$os]}
edit.clearSelection.smallIcon=
-edit.clearSelection.largeIcon=${imageDir}/spacerIcon.png
edit.clearSelection.text=Deselect All
edit.clearSelection.toolTipText=
edit.copy.accelerator.default=ctrl C
edit.copy.accelerator.mac=meta C
edit.copy.accelerator=${edit.copy.accelerator.[$os]}
-edit.copy.smallIcon=
edit.copy.largeIcon=${imageDir}/editCopy.png
+edit.copy.mnemonic.default=
edit.copy.mnemonic=${edit.copy.mnemonic.[$os]}
+edit.copy.smallIcon=${imageDir}/editCopy.png
edit.copy.text=Copy
edit.copy.toolTipText=Copy (${edit.copy.accelerator,accelerator})
edit.cut.accelerator.default=ctrl X
edit.cut.accelerator.mac=meta X
edit.cut.accelerator=${edit.cut.accelerator.[$os]}
-edit.cut.smallIcon=
edit.cut.largeIcon=${imageDir}/editCut.png
+edit.cut.mnemonic.default=
edit.cut.mnemonic=${edit.cut.mnemonic.[$os]}
+edit.cut.smallIcon=${imageDir}/editCut.png
edit.cut.text=Cut
edit.cut.toolTipText=Cut (${edit.cut.accelerator,accelerator})
edit.delete.accelerator=DELETE
-edit.delete.smallIcon=
-edit.delete.largeIcon=${imageDir}/spacerIcon.png
+edit.delete.icon=
+edit.delete.largeIcon=
+edit.delete.mnemonic.default=
edit.delete.mnemonic=${edit.delete.mnemonic.[$os]}
+edit.delete.smallIcon=
edit.delete.text=Delete
edit.delete.toolTipText=
edit.duplicate.accelerator=
+edit.duplicate.icon=
+edit.duplicate.largeIcon=
+edit.duplicate.mnemonic.default=
edit.duplicate.mnemonic=${edit.duplicate.mnemonic.[$os]}
edit.duplicate.smallIcon=
-edit.duplicate.largeIcon=${imageDir}/spacerIcon.png
edit.duplicate.text=Duplicate
edit.duplicate.toolTipText=
-edit.find.smallIcon=
+edit.find.accelerator.default=ctrl F
+edit.find.accelerator.mac=meta F
+edit.find.accelerator=${edit.find.accelerator.[$os]}
edit.find.largeIcon=
-edit.find.smallIcon=
edit.find.largeIcon=${imageDir}/spacerIcon.png
+edit.find.mnemonic.default=F
+edit.find.mnemonic.mac=
+edit.find.mnemonic=${edit.find.mnemonic.[$os]}
+edit.find.smallIcon=
+edit.find.smallIcon=
edit.find.text=Find...
edit.find.toolTipText=
edit.help.text.default=?
edit.help.text.mac=Help
edit.help.text=${edit.help.text.[$os]}
+edit.largeIcon=
+edit.mnemonic.default=E
+edit.mnemonic.mac=
edit.mnemonic=${edit.mnemonic.[$os]}
edit.paste.accelerator.default=ctrl V
edit.paste.accelerator.mac=meta V
edit.paste.accelerator=${edit.paste.accelerator.[$os]}
-edit.paste.smallIcon=
edit.paste.largeIcon=${imageDir}/editPaste.png
+edit.paste.mnemonic.default=
edit.paste.mnemonic=${edit.paste.mnemonic.[$os]}
+edit.paste.smallIcon=${imageDir}/editPaste.png
edit.paste.text=Paste
edit.paste.toolTipText=Paste (${edit.paste.accelerator,accelerator})
-edit.redo.smallIcon=
-edit.redo.largeIcon=${imageDir}/editRedo.png
edit.redo.accelerator.default=ctrl Y
edit.redo.accelerator.mac=shift meta Z
edit.redo.accelerator=${edit.redo.accelerator.[$os]}
+edit.redo.largeIcon=${imageDir}/editRedo.png
+edit.redo.mnemonic.default=
edit.redo.mnemonic=${edit.redo.mnemonic.[$os]}
+edit.redo.smallIcon=${imageDir}/editRedo.png
edit.redo.text=Redo
edit.redo.toolTipText=Redo (${edit.redo.accelerator,accelerator})
edit.selectAll.accelerator.default=ctrl A
edit.selectAll.accelerator.mac=meta A
edit.selectAll.accelerator=${edit.selectAll.accelerator.[$os]}
+edit.selectAll.icon=
+edit.selectAll.largeIcon=
+edit.selectAll.mnemonic.default=
edit.selectAll.mnemonic=${edit.selectAll.mnemonic.[$os]}
edit.selectAll.smallIcon=
-edit.selectAll.largeIcon=${imageDir}/spacerIcon.png
edit.selectAll.text=Select All
edit.selectAll.toolTipText=
+edit.smallIcon=
edit.text=Edit
edit.undo.accelerator.default=ctrl Z
edit.undo.accelerator.mac=meta Z
edit.undo.accelerator=${edit.undo.accelerator.[$os]}
-edit.undo.smallIcon=
edit.undo.largeIcon=${imageDir}/editUndo.png
+edit.undo.mnemonic.default=
edit.undo.mnemonic=${edit.undo.mnemonic.[$os]}
+edit.undo.smallIcon=${imageDir}/editUndo.png
edit.undo.text=Undo
edit.undo.toolTipText=Undo (${edit.undo.accelerator,accelerator})
file.accelerator=
-file.smallIcon=
-file.largeIcon=
+file.clear.accelerator=
+file.clear.largeIcon=
+file.clear.mnemonic.default=
+file.clear.mnemonic=${file.clear.mnemonic.[$os]}
+file.clear.smallIcon=
+file.clear.text=Clear
+file.clear.toolTipText=Clear
file.clearRecentFiles.accelerator=
-file.clearRecentFiles.smallIcon=
file.clearRecentFiles.largeIcon=
file.clearRecentFiles.mnemonic=
+file.clearRecentFiles.smallIcon=
file.clearRecentFiles.text=Clear Menu
file.clearRecentFiles.toolTipText=
file.close.accelerator.default=ctrl F4
file.close.accelerator.mac=meta W
file.close.accelerator=${file.close.accelerator.[$os]}
-file.close.smallIcon=
file.close.largeIcon=${imageDir}/spacerIcon.png
file.close.mnemonic.default=C
+file.close.mnemonic.mac=
+file.close.mnemonic=${file.close.mnemonic.[$os]}
+file.close.smallIcon=
file.close.text=Close
file.close.toolTipText=
file.export.accelerator=
-file.export.smallIcon=
file.export.largeIcon=${imageDir}/spacerIcon.png
+file.export.mnemonic.default=
file.export.mnemonic=${file.export.mnemonic.[$os]}
+file.export.smallIcon=
file.export.text=Export...
file.export.toolTipText=
-file.load.smallIcon=
+file.largeIcon=
+file.load.accelerator.default=ctrl O
+file.load.accelerator.mac=meta O
+file.load.accelerator=${file.open.accelerator.[$os]}
+file.load.couldntLoad.message=Couldn''t load the file "{0}".
+file.load.fileDoesNotExist.message=The file "{0}" does not exist.
file.load.largeIcon=${imageDir}/fileOpen.png
+file.load.mnemonic.default=O
+file.load.mnemonic.mac=
+file.load.mnemonic=${file.load.mnemonic.[$os]}
+file.load.smallIcon=
file.load.text=Load...
+file.load.toolTipText=Load File (${file.load.accelerator,accelerator})
+file.loadRecent.largeIcon=${imageDir}/spacerIcon.png
+file.loadRecent.mnemonic.default=
+file.loadRecent.mnemonic=${file.loadRecent.mnemonic.[$os]}
+file.loadRecent.smallIcon=
+file.loadRecent.text=Load Recent
+file.mnemonic.default=F
+file.mnemonic.mac=
file.mnemonic=${file.mnemonic.[$os]}
file.new.accelerator.default=ctrl N
file.new.accelerator.mac=meta N
file.new.accelerator=${file.new.accelerator.[$os]}
-file.new.smallIcon=
file.new.largeIcon=${imageDir}/fileNew.png
file.new.mnemonic.default=N
+file.new.mnemonic.mac=
+file.new.mnemonic=${file.new.mnemonic.[$os]}
+file.new.smallIcon=
file.new.text=New
file.new.toolTipText=New File (${file.new.accelerator,accelerator})
+file.newWindow.accelerator.default=ctrl N
+file.newWindow.accelerator.mac=meta N
+file.newWindow.accelerator=${file.newWindow.accelerator.[$os]}
+file.newWindow.largeIcon=
+file.newWindow.mnemonic.default=
+file.newWindow.mnemonic=${file.newWindow.mnemonic.[$os]}
+file.newWindow.smallIcon=
+file.newWindow.text=New Window
+file.newWindow.toolTipText=
file.open.accelerator.default=ctrl O
file.open.accelerator.mac=meta O
file.open.accelerator=${file.open.accelerator.[$os]}
-file.load.accelerator.default=ctrl O
-file.load.accelerator.mac=meta O
-file.load.accelerator=${file.open.accelerator.[$os]}
file.open.couldntOpen.message=Couldn''t open the file "{0}".
file.open.fileDoesNotExist.message=The file "{0}" does not exist.
-file.open.unsupportedFileFormat.message=The format of the file is not supported.
-file.open.smallIcon=
file.open.largeIcon=${imageDir}/fileOpen.png
file.open.mnemonic.default=O
+file.open.mnemonic.mac=
+file.open.mnemonic=${file.open.mnemonic.[$os]}
+file.open.smallIcon=
file.open.text=Open...
file.open.toolTipText=Open File\u2026 (${file.open.accelerator,accelerator})
-file.openDirectory.smallIcon=
+file.open.unsupportedFileFormat.message=The format of the file is not supported.
file.openDirectory.largeIcon=${imageDir}/spacerIcon.png
file.openDirectory.mnemonic=${file.openDirectory.mnemonic.[$os]}
+file.openDirectory.smallIcon=
file.openDirectory.text=Open Directory...
-file.openRecent.smallIcon=
file.openRecent.largeIcon=${imageDir}/spacerIcon.png
+file.openRecent.mnemonic.default=
file.openRecent.mnemonic=${file.openRecent.mnemonic.[$os]}
+file.openRecent.smallIcon=
file.openRecent.text=Open Recent
-file.loadRecent.smallIcon=
-file.loadRecent.largeIcon=${imageDir}/spacerIcon.png
-file.loadRecent.mnemonic=${file.loadRecent.mnemonic.[$os]}
-file.loadRecent.text=Load Recent
file.print.accelerator=
file.print.couldntPrint.message=Couldn''t print the document.
-file.print.smallIcon=
file.print.largeIcon=${imageDir}/filePrint.png
+file.print.mnemonic.default=
file.print.mnemonic=${file.print.mnemonic.[$os]}
+file.print.smallIcon=
file.print.text=Print...
file.print.toolTipText=
file.save.accelerator.default=ctrl S
file.save.accelerator.mac=meta S
file.save.accelerator=${file.save.accelerator.[$os]}
-file.save.smallIcon=
+file.save.couldntSave.message=Couldn''t save to the file "{0}"
file.save.largeIcon=${imageDir}/fileSave.png
file.save.mnemonic.default=S
+file.save.mnemonic.mac=
+file.save.mnemonic=${file.save.mnemonic.[$os]}
+file.save.smallIcon=
file.save.text=Save
file.save.toolTipText=Save File (${file.save.accelerator,accelerator})
file.saveAs.accelerator.default=
file.saveAs.accelerator.mac=shift meta S
file.saveAs.accelerator=${file.saveAs.accelerator.[$os]}
-file.saveAs.smallIcon=
+file.saveAs.couldntSaveIntoOpenFile.message=Couldn''t save to the file "{0}" because it is open in another window.
file.saveAs.largeIcon=${imageDir}/spacerIcon.png
+file.saveAs.mnemonic.default=
file.saveAs.mnemonic=${file.saveAs.mnemonic.[$os]}
+file.saveAs.smallIcon=
file.saveAs.text=Save As...
file.saveAs.toolTipText=
file.saveBefore.cancelOption.text=Cancel
-file.save.couldntSave.message=Couldn''t save to the file "{0}"
file.saveBefore.dontSaveOption.text=Don't Save
-file.saveBefore.doYouWantToSave.message=Do you want to save your changes to the document "{0}"?
file.saveBefore.doYouWantToSave.details=If you don't save, your changes will be lost.
+file.saveBefore.doYouWantToSave.message=Do you want to save your changes to the document "{0}"?
file.saveBefore.saveOption.text=Save
+file.smallIcon=
file.text=File
filechooser.export=Export
find.text=Find...
@@ -200,164 +293,76 @@ frame.title.default={0}{2,choice,1\#|1< {2}} - {1}
frame.title.mac={0}{2,choice,1#|1< {2}}
frame.title=${frame.title.[$os]}
help.accelerator=
+help.largeIcon=
help.mnemonic.default=?
-help.text=${help.text.[$os]}
+help.mnemonic.mac=
+help.mnemonic=${help.mnemonic.[$os]}
+help.smallIcon=
help.text.default=?
-imageDir=/org/jhotdraw/app/action/images
+help.text.mac=Help
+help.text=${help.text.[$os]}
internalFrame.title={0}{2,choice,1\#|1< {2}}
standardToolBar.title=Standard
toolBars=Tool Bars
unnamedFile=unnamed
view.accelerator=
+view.largeIcon=
view.mnemonic.default=V
-view.text=View
+view.mnemonic.mac=
+view.mnemonic=${view.mnemonic.[$os]}
view.smallIcon=
-view.largeIcon=
+view.text=View
+window.arrangeCascade.accelerator=
+window.arrangeCascade.largeIcon=
+window.arrangeCascade.mnemonic.default=
+window.arrangeCascade.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
+window.arrangeCascade.smallIcon=
window.arrangeCascade.text=Arrange Cascade
+window.arrangeCascade.toolTipText=
+window.arrangeHorizontal.accelerator=
+window.arrangeHorizontal.largeIcon=
+window.arrangeHorizontal.mnemonic.default=
+window.arrangeHorizontal.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
+window.arrangeHorizontal.smallIcon=
window.arrangeHorizontal.text=Arrange Horizontal
+window.arrangeHorizontal.toolTipText=
window.arrangeVertical.accelerator=
+window.arrangeVertical.largeIcon=
+window.arrangeVertical.mnemonic.default=
window.arrangeVertical.mnemonic=${window.arrangeVertical.mnemonic.[$os]}
+window.arrangeVertical.smallIcon=
window.arrangeVertical.text=Arrange Vertical
+window.arrangeVertical.toolTipText=
window.focus.accelerator=
-window.focus.smallIcon=
window.focus.largeIcon=
+window.focus.mnemonic.default=
window.focus.mnemonic=${window.focus.mnemonic.[$os]}
+window.focus.smallIcon=
window.focus.text=Focus
window.focus.toolTipText=
+window.largeIcon=
window.maximize.accelerator=
-window.maximize.smallIcon=
window.maximize.largeIcon=
+window.maximize.mnemonic.default=
window.maximize.mnemonic=${window.maximize.mnemonic.[$os]}
+window.maximize.smallIcon=
window.maximize.text.default=Maximize
+window.maximize.text.mac=Zoom
+window.maximize.text=${window.maximize.text.[$os]}
window.maximize.toolTipText=
window.minimize.accelerator.default=
window.minimize.accelerator.mac=meta M
window.minimize.accelerator=${window.minimize.accelerator.[$os]}
-window.minimize.smallIcon=
window.minimize.largeIcon=
+window.minimize.mnemonic.default=
window.minimize.mnemonic=${window.minimize.mnemonic.[$os]}
+window.minimize.smallIcon=
window.minimize.text=Minimize
window.minimize.toolTipText=
+window.mnemonic.default=W
+window.mnemonic.mac=
window.mnemonic=${window.mnemonic.[$os]}
-file.newWindow.accelerator=${file.newWindow.accelerator.[$os]}
-file.newWindow.smallIcon=
-file.newWindow.largeIcon=
-file.newWindow.mnemonic=${file.newWindow.mnemonic.[$os]}
-file.newWindow.text=New Window
-window.text=Window
window.smallIcon=
-window.largeIcon=
-help.text.mac=Help
-file.newWindow.toolTipText=
-help.smallIcon=
-help.largeIcon=
-file.load.couldntLoad.message=Couldn''t load the file "{0}".
-window.maximize.text.mac=Zoom
-window.maximize.text=${window.maximize.text.[$os]}
-application.preferences.text=Preferences...
-application.preferences.toolTipText=
-application.preferences.accelerator=
-application.preferences.mnemonic=${application.preferences.mnemonic.[$os]}
-application.preferences.smallIcon=
-application.preferences.largeIcon=
-window.arrangeVertical.toolTipText=
-window.arrangeVertical.smallIcon=
-window.arrangeVertical.largeIcon=
-window.arrangeHorizontal.toolTipText=
-window.arrangeHorizontal.accelerator=
-window.arrangeHorizontal.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
-window.arrangeHorizontal.smallIcon=
-window.arrangeHorizontal.largeIcon=
-window.arrangeCascade.toolTipText=
-window.arrangeCascade.accelerator=
-window.arrangeCascade.smallIcon=
-window.arrangeCascade.largeIcon=
-window.arrangeCascade.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
-file.mnemonic.default=F
-file.mnemonic.mac=
-edit.mnemonic.default=E
-edit.mnemonic.mac=
-window.mnemonic.mac=
-window.mnemonic.default=W
-application.about.mnemonic=${application.about.mnemonic.[$os]}
-application.about.mnemonic.mac=
-application.debug.mnemonic=${application.debug.mnemonic.[$os]}
-application.debug.mnemonic.mac=
-edit.clearSelection.mnemonic.default=
-file.close.mnemonic=${file.close.mnemonic.[$os]}
-file.close.mnemonic.mac=
-file.new.mnemonic=${file.new.mnemonic.[$os]}
-file.new.mnemonic.mac=
-file.open.mnemonic=${file.open.mnemonic.[$os]}
-file.open.mnemonic.mac=
-file.save.mnemonic=${file.save.mnemonic.[$os]}
-file.save.mnemonic.mac=
-help.mnemonic=${help.mnemonic.[$os]}
-help.mnemonic.mac=
-view.mnemonic=${view.mnemonic.[$os]}
-view.mnemonic.mac=
-file.newWindow.mnemonic.default=
-file.saveAs.mnemonic.default=
-file.print.mnemonic.default=
-edit.undo.mnemonic.default=
-edit.redo.mnemonic.default=
-edit.cut.mnemonic.default=
-edit.copy.mnemonic.default=
-edit.paste.mnemonic.default=
-edit.delete.mnemonic.default=
-edit.duplicate.mnemonic.default=
-edit.selectAll.mnemonic.default=
-window.maximize.mnemonic.default=
-window.minimize.mnemonic.default=
-file.export.mnemonic.default=
-file.openRecent.mnemonic.default=
-window.focus.mnemonic.default=
-application.exit.doYouWantToSave.message=Do you want to save changes to the document "{0}" before exiting?
-application.exit.doYouWantToSave.details=If you don't save, your changes will be lost.
-application.exit.doYouWantToReview.message=You have {0} documents with unsaved changes. Do you want to review these changes before quitting?
-application.exit.doYouWantToReview.details=If you don't review your documents, all your changes will be lost.
-application.exit.saveOption=Save...
-application.exit.dontSaveOption=Don't Save
-application.exit.cancelOption=Cancel
-application.exit.reviewChangesOption=Review Changes...
-application.exit.discardChangesOption=Discard Changes
-file.load.fileDoesNotExist.message=The file "{0}" does not exist.
-window.arrangeVertical.mnemonic.default=
-window.arrangeHorizontal.mnemonic.default=
-window.arrangeCascade.mnemonic.default=
-file.clear.text=Clear
-file.clear.toolTipText=Clear
-file.clear.accelerator=
-file.clear.mnemonic=${file.clear.mnemonic.[$os]}
-file.clear.mnemonic.default=
-file.clear.smallIcon=
-file.clear.largeIcon=
-accelerator.meta=${accelerator.meta.[$os]}
-accelerator.meta.default=Meta-
-accelerator.meta.win=Windows-
-accelerator.meta.mac=\u2318
-accelerator.shift=${accelerator.shift.[$os]}
-accelerator.shift.default=Shift-
-accelerator.shift.mac=\u21e7
-accelerator.ctrl=${accelerator.ctrl.[$os]}
-accelerator.ctrl.default=Ctrl-
-accelerator.control=${accelerator.ctrl.[$os]}
-accelerator.alt=${accelerator.alt.[$os]}
-accelerator.alt.default=Alt-
-accelerator.alt.mac=\u2387
-accelerator.altGraph=${accelerator.altGraph.[$os]}
-accelerator.altGraph.default=AltGraph-
-file.load.toolTipText=Load File (${file.load.accelerator,accelerator})
-file.load.mnemonic=${file.load.mnemonic.[$os]}
-file.load.mnemonic.default=O
-file.load.mnemonic.mac=
-file.loadRecent.mnemonic.default=
-file.newWindow.accelerator.default=ctrl N
-file.newWindow.accelerator.mac=meta N
-edit.find.accelerator=${edit.find.accelerator.[$os]}
-edit.find.accelerator.default=ctrl F
-edit.find.accelerator.mac=meta F
-edit.find.mnemonic=${edit.find.mnemonic.[$os]}
-edit.find.mnemonic.default=F
-edit.find.mnemonic.mac=
-file.saveAs.couldntSaveIntoOpenFile.message=Couldn''t save to the file "{0}" because it is open in another window.
+window.text=Window
+
+imageDir=/org/jhotdraw/app/action/images
\ No newline at end of file
diff --git a/jhotdraw-api/jhotdraw-api.iml b/jhotdraw-api/jhotdraw-api.iml
index 0a482f7c3..afefd989d 100644
--- a/jhotdraw-api/jhotdraw-api.iml
+++ b/jhotdraw-api/jhotdraw-api.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-app/jhotdraw-app.iml b/jhotdraw-app/jhotdraw-app.iml
index 74d3ca93a..115d6aa21 100644
--- a/jhotdraw-app/jhotdraw-app.iml
+++ b/jhotdraw-app/jhotdraw-app.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-app/src/main/resources/org/jhotdraw/app/Labels.properties b/jhotdraw-app/src/main/resources/org/jhotdraw/app/Labels.properties
index 7bc447b22..7738cf4dc 100644
--- a/jhotdraw-app/src/main/resources/org/jhotdraw/app/Labels.properties
+++ b/jhotdraw-app/src/main/resources/org/jhotdraw/app/Labels.properties
@@ -1,198 +1,292 @@
# Sample ResourceBundle properties file
+accelerator.alt.default=Alt-
+accelerator.alt.mac=\u2387
+accelerator.alt=${accelerator.alt.[$os]}
+accelerator.altGraph.default=AltGraph-
+accelerator.altGraph=${accelerator.altGraph.[$os]}
+accelerator.control=${accelerator.ctrl.[$os]}
+accelerator.ctrl.default=Ctrl-
+accelerator.ctrl=${accelerator.ctrl.[$os]}
+accelerator.meta.default=Meta-
+accelerator.meta.mac=\u2318
+accelerator.meta.win=Windows-
+accelerator.meta=${accelerator.meta.[$os]}
+accelerator.shift.default=Shift-
+accelerator.shift.mac=\u21e7
+accelerator.shift=${accelerator.shift.[$os]}
application.about.accelerator=
-application.about.smallIcon=
+application.about.icon=
application.about.largeIcon=
application.about.mnemonic.default=A
+application.about.mnemonic.mac=
+application.about.mnemonic=${application.about.mnemonic.[$os]}
+application.about.smallIcon=
application.about.text=About
application.about.toolTipText=
application.debug.accelerator=
application.debug.mnemonic.default=D
+application.debug.mnemonic.mac=
+application.debug.mnemonic=${application.debug.mnemonic.[$os]}
application.debug.text=Debug
application.exit.accelerator.default=
application.exit.accelerator.mac=meta Q
application.exit.accelerator=${application.exit.accelerator.[$os]}
-application.exit.smallIcon=
+application.exit.cancelOption=Cancel
+application.exit.discardChangesOption=Discard Changes
+application.exit.dontSaveOption=Don't Save
+application.exit.doYouWantToReview.details=If you don't review your documents, all your changes will be lost.
+application.exit.doYouWantToReview.message=You have {0} documents with unsaved changes. Do you want to review these changes before quitting?
+application.exit.doYouWantToSave.details=If you don't save, your changes will be lost.
+application.exit.doYouWantToSave.message=Do you want to save changes to the document "{0}" before exiting?
application.exit.largeIcon=${imageDir}/spacerIcon.png
application.exit.mnemonic.default=x
application.exit.mnemonic.mac=
application.exit.mnemonic=${application.exit.mnemonic.[$os]}
+application.exit.reviewChangesOption=Review Changes...
+application.exit.saveOption=Save...
+application.exit.smallIcon=
application.exit.text.default=Exit
application.exit.text.mac=Quit
application.exit.text=${application.exit.text.[$os]}
application.exit.toolTipText=
+application.preferences.accelerator=
+application.preferences.largeIcon=
+application.preferences.mnemonic=${application.preferences.mnemonic.[$os]}
+application.preferences.smallIcon=
+application.preferences.text=Preferences...
+application.preferences.toolTipText=
edit.accelerator=
edit.cancel.text=Cancel
-edit.smallIcon=
-edit.largeIcon=
edit.clearSelection.accelerator.default=shift ctrl A
edit.clearSelection.accelerator.mac=shift meta A
edit.clearSelection.accelerator=${edit.clearSelection.accelerator.[$os]}
+edit.clearSelection.largeIcon=${imageDir}/spacerIcon.png
+edit.clearSelection.mnemonic.default=
edit.clearSelection.mnemonic=${edit.clearSelection.mnemonic.[$os]}
edit.clearSelection.smallIcon=
-edit.clearSelection.largeIcon=${imageDir}/spacerIcon.png
edit.clearSelection.text=Deselect All
edit.clearSelection.toolTipText=
edit.copy.accelerator.default=ctrl C
edit.copy.accelerator.mac=meta C
edit.copy.accelerator=${edit.copy.accelerator.[$os]}
-edit.copy.smallIcon=
edit.copy.largeIcon=${imageDir}/editCopy.png
+edit.copy.mnemonic.default=
edit.copy.mnemonic=${edit.copy.mnemonic.[$os]}
+edit.copy.smallIcon=
edit.copy.text=Copy
edit.copy.toolTipText=Copy (${edit.copy.accelerator,accelerator})
edit.cut.accelerator.default=ctrl X
edit.cut.accelerator.mac=meta X
edit.cut.accelerator=${edit.cut.accelerator.[$os]}
-edit.cut.smallIcon=
edit.cut.largeIcon=${imageDir}/editCut.png
+edit.cut.mnemonic.default=
edit.cut.mnemonic=${edit.cut.mnemonic.[$os]}
+edit.cut.smallIcon=
edit.cut.text=Cut
edit.cut.toolTipText=Cut (${edit.cut.accelerator,accelerator})
edit.delete.accelerator=DELETE
-edit.delete.smallIcon=
edit.delete.largeIcon=${imageDir}/spacerIcon.png
+edit.delete.mnemonic.default=
edit.delete.mnemonic=${edit.delete.mnemonic.[$os]}
+edit.delete.smallIcon=
edit.delete.text=Delete
edit.delete.toolTipText=
edit.duplicate.accelerator=
+edit.duplicate.largeIcon=${imageDir}/spacerIcon.png
+edit.duplicate.mnemonic.default=
edit.duplicate.mnemonic=${edit.duplicate.mnemonic.[$os]}
edit.duplicate.smallIcon=
-edit.duplicate.largeIcon=${imageDir}/spacerIcon.png
edit.duplicate.text=Duplicate
edit.duplicate.toolTipText=
-edit.find.smallIcon=
-edit.find.largeIcon=
-edit.find.smallIcon=
+edit.find.accelerator.default=ctrl F
+edit.find.accelerator.mac=meta F
+edit.find.accelerator=${edit.find.accelerator.[$os]}
edit.find.largeIcon=${imageDir}/spacerIcon.png
+edit.find.mnemonic.default=F
+edit.find.mnemonic.mac=
+edit.find.mnemonic=${edit.find.mnemonic.[$os]}
+edit.find.smallIcon=
edit.find.text=Find...
edit.find.toolTipText=
edit.help.text.default=?
edit.help.text.mac=Help
edit.help.text=${edit.help.text.[$os]}
+edit.icon=
+edit.largeIcon=
+edit.mnemonic.default=E
+edit.mnemonic.mac=
edit.mnemonic=${edit.mnemonic.[$os]}
edit.paste.accelerator.default=ctrl V
edit.paste.accelerator.mac=meta V
edit.paste.accelerator=${edit.paste.accelerator.[$os]}
-edit.paste.smallIcon=
edit.paste.largeIcon=${imageDir}/editPaste.png
+edit.paste.mnemonic.default=
edit.paste.mnemonic=${edit.paste.mnemonic.[$os]}
+edit.paste.smallIcon=
edit.paste.text=Paste
edit.paste.toolTipText=Paste (${edit.paste.accelerator,accelerator})
-edit.redo.smallIcon=
-edit.redo.largeIcon=${imageDir}/editRedo.png
edit.redo.accelerator.default=ctrl Y
edit.redo.accelerator.mac=shift meta Z
edit.redo.accelerator=${edit.redo.accelerator.[$os]}
+edit.redo.largeIcon=${imageDir}/editRedo.png
+edit.redo.mnemonic.default=
edit.redo.mnemonic=${edit.redo.mnemonic.[$os]}
+edit.redo.smallIcon=
edit.redo.text=Redo
edit.redo.toolTipText=Redo (${edit.redo.accelerator,accelerator})
edit.selectAll.accelerator.default=ctrl A
edit.selectAll.accelerator.mac=meta A
edit.selectAll.accelerator=${edit.selectAll.accelerator.[$os]}
+edit.selectAll.largeIcon=${imageDir}/spacerIcon.png
+edit.selectAll.mnemonic.default=
edit.selectAll.mnemonic=${edit.selectAll.mnemonic.[$os]}
edit.selectAll.smallIcon=
-edit.selectAll.largeIcon=${imageDir}/spacerIcon.png
edit.selectAll.text=Select All
edit.selectAll.toolTipText=
+edit.smallIcon=
edit.text=Edit
edit.undo.accelerator.default=ctrl Z
edit.undo.accelerator.mac=meta Z
edit.undo.accelerator=${edit.undo.accelerator.[$os]}
-edit.undo.smallIcon=
edit.undo.largeIcon=${imageDir}/editUndo.png
+edit.undo.mnemonic.default=
edit.undo.mnemonic=${edit.undo.mnemonic.[$os]}
+edit.undo.smallIcon=
edit.undo.text=Undo
edit.undo.toolTipText=Undo (${edit.undo.accelerator,accelerator})
file.accelerator=
-file.smallIcon=
-file.largeIcon=
+file.clear.accelerator=
+file.clear.largeIcon=
+file.clear.mnemonic.default=
+file.clear.mnemonic=${file.clear.mnemonic.[$os]}
+file.clear.smallIcon=
+file.clear.text=Clear
+file.clear.toolTipText=Clear
file.clearRecentFiles.accelerator=
-file.clearRecentFiles.smallIcon=
+file.clearRecentFiles.icon=
file.clearRecentFiles.largeIcon=
file.clearRecentFiles.mnemonic=
+file.clearRecentFiles.smallIcon=
file.clearRecentFiles.text=Clear Menu
file.clearRecentFiles.toolTipText=
file.close.accelerator.default=ctrl F4
file.close.accelerator.mac=meta W
file.close.accelerator=${file.close.accelerator.[$os]}
-file.close.smallIcon=
-file.close.largeIcon=${imageDir}/spacerIcon.png
+file.close.icon=
+file.close.largeIcon=
file.close.mnemonic.default=C
+file.close.mnemonic.mac=
+file.close.mnemonic=${file.close.mnemonic.[$os]}
+file.close.smallIcon=
file.close.text=Close
file.close.toolTipText=
file.export.accelerator=
-file.export.smallIcon=
+file.export.icon=
file.export.largeIcon=${imageDir}/spacerIcon.png
+file.export.mnemonic.default=
file.export.mnemonic=${file.export.mnemonic.[$os]}
+file.export.smallIcon=
file.export.text=Export...
file.export.toolTipText=
-file.load.smallIcon=
+file.icon=
+file.largeIcon=
+file.load.accelerator.default=ctrl O
+file.load.accelerator.mac=meta O
+file.load.accelerator=${file.open.accelerator.[$os]}
+file.load.couldntLoad.message=Couldn''t load the file "{0}".
+file.load.fileDoesNotExist.message=The file "{0}" does not exist.
file.load.largeIcon=${imageDir}/fileOpen.png
+file.load.mnemonic.default=O
+file.load.mnemonic.mac=
+file.load.mnemonic=${file.load.mnemonic.[$os]}
+file.load.smallIcon=
file.load.text=Load...
+file.load.toolTipText=Load File (${file.load.accelerator,accelerator})
+file.loadRecent.largeIcon=${imageDir}/spacerIcon.png
+file.loadRecent.mnemonic.default=
+file.loadRecent.mnemonic=${file.loadRecent.mnemonic.[$os]}
+file.loadRecent.smallIcon=
+file.loadRecent.text=Load Recent
+file.mnemonic.default=F
+file.mnemonic.mac=
file.mnemonic=${file.mnemonic.[$os]}
file.new.accelerator.default=ctrl N
file.new.accelerator.mac=meta N
file.new.accelerator=${file.new.accelerator.[$os]}
-file.new.smallIcon=
file.new.largeIcon=${imageDir}/fileNew.png
file.new.mnemonic.default=N
+file.new.mnemonic.mac=
+file.new.mnemonic=${file.new.mnemonic.[$os]}
+file.new.smallIcon=${imageDir}/fileNew.png
file.new.text=New
file.new.toolTipText=New File (${file.new.accelerator,accelerator})
+file.newWindow.accelerator.default=ctrl N
+file.newWindow.accelerator.mac=meta N
+file.newWindow.accelerator=${file.newWindow.accelerator.[$os]}
+file.newWindow.largeIcon=
+file.newWindow.mnemonic.default=
+file.newWindow.mnemonic=${file.newWindow.mnemonic.[$os]}
+file.newWindow.smallIcon=
+file.newWindow.text=New Window
+file.newWindow.toolTipText=
file.open.accelerator.default=ctrl O
file.open.accelerator.mac=meta O
file.open.accelerator=${file.open.accelerator.[$os]}
-file.load.accelerator.default=ctrl O
-file.load.accelerator.mac=meta O
-file.load.accelerator=${file.open.accelerator.[$os]}
file.open.couldntOpen.message=Couldn''t open the file "{0}".
file.open.fileDoesNotExist.message=The file "{0}" does not exist.
-file.open.unsupportedFileFormat.message=The format of the file is not supported.
-file.open.smallIcon=
file.open.largeIcon=${imageDir}/fileOpen.png
file.open.mnemonic.default=O
+file.open.mnemonic.mac=
+file.open.mnemonic=${file.open.mnemonic.[$os]}
+file.open.smallIcon=${imageDir}/fileOpen.png
file.open.text=Open...
file.open.toolTipText=Open File\u2026 (${file.open.accelerator,accelerator})
-file.openDirectory.smallIcon=
+file.open.unsupportedFileFormat.message=The format of the file is not supported.
file.openDirectory.largeIcon=${imageDir}/spacerIcon.png
file.openDirectory.mnemonic=${file.openDirectory.mnemonic.[$os]}
+file.openDirectory.smallIcon=
file.openDirectory.text=Open Directory...
-file.openRecent.smallIcon=
file.openRecent.largeIcon=${imageDir}/spacerIcon.png
+file.openRecent.mnemonic.default=
file.openRecent.mnemonic=${file.openRecent.mnemonic.[$os]}
+file.openRecent.smallIcon=
file.openRecent.text=Open Recent
-file.loadRecent.smallIcon=
-file.loadRecent.largeIcon=${imageDir}/spacerIcon.png
-file.loadRecent.mnemonic=${file.loadRecent.mnemonic.[$os]}
-file.loadRecent.text=Load Recent
file.print.accelerator=
file.print.couldntPrint.message=Couldn''t print the document.
-file.print.smallIcon=
file.print.largeIcon=${imageDir}/filePrint.png
+file.print.mnemonic.default=
file.print.mnemonic=${file.print.mnemonic.[$os]}
+file.print.smallIcon=
file.print.text=Print...
file.print.toolTipText=
file.save.accelerator.default=ctrl S
file.save.accelerator.mac=meta S
file.save.accelerator=${file.save.accelerator.[$os]}
-file.save.smallIcon=
+file.save.couldntSave.message=Couldn''t save to the file "{0}"
file.save.largeIcon=${imageDir}/fileSave.png
file.save.mnemonic.default=S
+file.save.mnemonic.mac=
+file.save.mnemonic=${file.save.mnemonic.[$os]}
+file.save.smallIcon=${imageDir}/fileSave.png
file.save.text=Save
file.save.toolTipText=Save File (${file.save.accelerator,accelerator})
file.saveAs.accelerator.default=
file.saveAs.accelerator.mac=shift meta S
file.saveAs.accelerator=${file.saveAs.accelerator.[$os]}
-file.saveAs.smallIcon=
-file.saveAs.largeIcon=${imageDir}/spacerIcon.png
+file.saveAs.couldntSaveIntoOpenFile.message=Couldn''t save to the file "{0}" because it is open in another window.
+file.saveAs.icon=
+file.saveAs.largeIcon=
+file.saveAs.mnemonic.default=
file.saveAs.mnemonic=${file.saveAs.mnemonic.[$os]}
+file.saveAs.smallIcon=
file.saveAs.text=Save As...
file.saveAs.toolTipText=
file.saveBefore.cancelOption.text=Cancel
-file.save.couldntSave.message=Couldn''t save to the file "{0}"
file.saveBefore.dontSaveOption.text=Don't Save
-file.saveBefore.doYouWantToSave.message=Do you want to save your changes to the document "{0}"?
file.saveBefore.doYouWantToSave.details=If you don't save, your changes will be lost.
+file.saveBefore.doYouWantToSave.message=Do you want to save your changes to the document "{0}"?
file.saveBefore.saveOption.text=Save
+file.smallIcon=
file.text=File
filechooser.export=Export
find.text=Find...
@@ -200,164 +294,79 @@ frame.title.default={0}{2,choice,1\#|1< {2}} - {1}
frame.title.mac={0}{2,choice,1#|1< {2}}
frame.title=${frame.title.[$os]}
help.accelerator=
+help.icon=
+help.largeIcon=
help.mnemonic.default=?
-help.text=${help.text.[$os]}
+help.mnemonic.mac=
+help.mnemonic=${help.mnemonic.[$os]}
+help.smallIcon=
help.text.default=?
-imageDir=/org/jhotdraw/app/action/images
+help.text.mac=Help
+help.text=${help.text.[$os]}
internalFrame.title={0}{2,choice,1\#|1< {2}}
standardToolBar.title=Standard
toolBars=Tool Bars
unnamedFile=unnamed
view.accelerator=
+view.icon=
+view.largeIcon=
view.mnemonic.default=V
-view.text=View
+view.mnemonic.mac=
+view.mnemonic=${view.mnemonic.[$os]}
view.smallIcon=
-view.largeIcon=
+view.text=View
+window.arrangeCascade.accelerator=
+window.arrangeCascade.largeIcon=
+window.arrangeCascade.mnemonic.default=
+window.arrangeCascade.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
+window.arrangeCascade.smallIcon=
window.arrangeCascade.text=Arrange Cascade
+window.arrangeCascade.toolTipText=
+window.arrangeHorizontal.accelerator=
+window.arrangeHorizontal.largeIcon=
+window.arrangeHorizontal.mnemonic.default=
+window.arrangeHorizontal.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
+window.arrangeHorizontal.smallIcon=
window.arrangeHorizontal.text=Arrange Horizontal
+window.arrangeHorizontal.toolTipText=
window.arrangeVertical.accelerator=
+window.arrangeVertical.largeIcon=
+window.arrangeVertical.mnemonic.default=
window.arrangeVertical.mnemonic=${window.arrangeVertical.mnemonic.[$os]}
+window.arrangeVertical.smallIcon=
window.arrangeVertical.text=Arrange Vertical
+window.arrangeVertical.toolTipText=
window.focus.accelerator=
-window.focus.smallIcon=
window.focus.largeIcon=
+window.focus.mnemonic.default=
window.focus.mnemonic=${window.focus.mnemonic.[$os]}
+window.focus.smallIcon=
window.focus.text=Focus
window.focus.toolTipText=
+window.icon=
+window.largeIcon=
window.maximize.accelerator=
-window.maximize.smallIcon=
window.maximize.largeIcon=
+window.maximize.mnemonic.default=
window.maximize.mnemonic=${window.maximize.mnemonic.[$os]}
+window.maximize.smallIcon=
window.maximize.text.default=Maximize
+window.maximize.text.mac=Zoom
+window.maximize.text=${window.maximize.text.[$os]}
window.maximize.toolTipText=
window.minimize.accelerator.default=
window.minimize.accelerator.mac=meta M
window.minimize.accelerator=${window.minimize.accelerator.[$os]}
-window.minimize.smallIcon=
window.minimize.largeIcon=
+window.minimize.mnemonic.default=
window.minimize.mnemonic=${window.minimize.mnemonic.[$os]}
+window.minimize.smallIcon=
window.minimize.text=Minimize
window.minimize.toolTipText=
+window.mnemonic.default=W
+window.mnemonic.mac=
window.mnemonic=${window.mnemonic.[$os]}
-file.newWindow.accelerator=${file.newWindow.accelerator.[$os]}
-file.newWindow.smallIcon=
-file.newWindow.largeIcon=
-file.newWindow.mnemonic=${file.newWindow.mnemonic.[$os]}
-file.newWindow.text=New Window
-window.text=Window
window.smallIcon=
-window.largeIcon=
-help.text.mac=Help
-file.newWindow.toolTipText=
-help.smallIcon=
-help.largeIcon=
-file.load.couldntLoad.message=Couldn''t load the file "{0}".
-window.maximize.text.mac=Zoom
-window.maximize.text=${window.maximize.text.[$os]}
-application.preferences.text=Preferences...
-application.preferences.toolTipText=
-application.preferences.accelerator=
-application.preferences.mnemonic=${application.preferences.mnemonic.[$os]}
-application.preferences.smallIcon=
-application.preferences.largeIcon=
-window.arrangeVertical.toolTipText=
-window.arrangeVertical.smallIcon=
-window.arrangeVertical.largeIcon=
-window.arrangeHorizontal.toolTipText=
-window.arrangeHorizontal.accelerator=
-window.arrangeHorizontal.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
-window.arrangeHorizontal.smallIcon=
-window.arrangeHorizontal.largeIcon=
-window.arrangeCascade.toolTipText=
-window.arrangeCascade.accelerator=
-window.arrangeCascade.smallIcon=
-window.arrangeCascade.largeIcon=
-window.arrangeCascade.mnemonic=${window.arrangeHorizontal.mnemonic.[$os]}
-file.mnemonic.default=F
-file.mnemonic.mac=
-edit.mnemonic.default=E
-edit.mnemonic.mac=
-window.mnemonic.mac=
-window.mnemonic.default=W
-application.about.mnemonic=${application.about.mnemonic.[$os]}
-application.about.mnemonic.mac=
-application.debug.mnemonic=${application.debug.mnemonic.[$os]}
-application.debug.mnemonic.mac=
-edit.clearSelection.mnemonic.default=
-file.close.mnemonic=${file.close.mnemonic.[$os]}
-file.close.mnemonic.mac=
-file.new.mnemonic=${file.new.mnemonic.[$os]}
-file.new.mnemonic.mac=
-file.open.mnemonic=${file.open.mnemonic.[$os]}
-file.open.mnemonic.mac=
-file.save.mnemonic=${file.save.mnemonic.[$os]}
-file.save.mnemonic.mac=
-help.mnemonic=${help.mnemonic.[$os]}
-help.mnemonic.mac=
-view.mnemonic=${view.mnemonic.[$os]}
-view.mnemonic.mac=
-file.newWindow.mnemonic.default=
-file.saveAs.mnemonic.default=
-file.print.mnemonic.default=
-edit.undo.mnemonic.default=
-edit.redo.mnemonic.default=
-edit.cut.mnemonic.default=
-edit.copy.mnemonic.default=
-edit.paste.mnemonic.default=
-edit.delete.mnemonic.default=
-edit.duplicate.mnemonic.default=
-edit.selectAll.mnemonic.default=
-window.maximize.mnemonic.default=
-window.minimize.mnemonic.default=
-file.export.mnemonic.default=
-file.openRecent.mnemonic.default=
-window.focus.mnemonic.default=
-application.exit.doYouWantToSave.message=Do you want to save changes to the document "{0}" before exiting?
-application.exit.doYouWantToSave.details=If you don't save, your changes will be lost.
-application.exit.doYouWantToReview.message=You have {0} documents with unsaved changes. Do you want to review these changes before quitting?
-application.exit.doYouWantToReview.details=If you don't review your documents, all your changes will be lost.
-application.exit.saveOption=Save...
-application.exit.dontSaveOption=Don't Save
-application.exit.cancelOption=Cancel
-application.exit.reviewChangesOption=Review Changes...
-application.exit.discardChangesOption=Discard Changes
-file.load.fileDoesNotExist.message=The file "{0}" does not exist.
-window.arrangeVertical.mnemonic.default=
-window.arrangeHorizontal.mnemonic.default=
-window.arrangeCascade.mnemonic.default=
-file.clear.text=Clear
-file.clear.toolTipText=Clear
-file.clear.accelerator=
-file.clear.mnemonic=${file.clear.mnemonic.[$os]}
-file.clear.mnemonic.default=
-file.clear.smallIcon=
-file.clear.largeIcon=
-accelerator.meta=${accelerator.meta.[$os]}
-accelerator.meta.default=Meta-
-accelerator.meta.win=Windows-
-accelerator.meta.mac=\u2318
-accelerator.shift=${accelerator.shift.[$os]}
-accelerator.shift.default=Shift-
-accelerator.shift.mac=\u21e7
-accelerator.ctrl=${accelerator.ctrl.[$os]}
-accelerator.ctrl.default=Ctrl-
-accelerator.control=${accelerator.ctrl.[$os]}
-accelerator.alt=${accelerator.alt.[$os]}
-accelerator.alt.default=Alt-
-accelerator.alt.mac=\u2387
-accelerator.altGraph=${accelerator.altGraph.[$os]}
-accelerator.altGraph.default=AltGraph-
-file.load.toolTipText=Load File (${file.load.accelerator,accelerator})
-file.load.mnemonic=${file.load.mnemonic.[$os]}
-file.load.mnemonic.default=O
-file.load.mnemonic.mac=
-file.loadRecent.mnemonic.default=
-file.newWindow.accelerator.default=ctrl N
-file.newWindow.accelerator.mac=meta N
-edit.find.accelerator=${edit.find.accelerator.[$os]}
-edit.find.accelerator.default=ctrl F
-edit.find.accelerator.mac=meta F
-edit.find.mnemonic=${edit.find.mnemonic.[$os]}
-edit.find.mnemonic.default=F
-edit.find.mnemonic.mac=
-file.saveAs.couldntSaveIntoOpenFile.message=Couldn''t save to the file "{0}" because it is open in another window.
+window.text=Window
+
+imageDir=/org/jhotdraw/app/action/images
\ No newline at end of file
diff --git a/jhotdraw-core/jhotdraw-core.iml b/jhotdraw-core/jhotdraw-core.iml
index 47955ec54..a0832be0a 100644
--- a/jhotdraw-core/jhotdraw-core.iml
+++ b/jhotdraw-core/jhotdraw-core.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-core/pom.xml b/jhotdraw-core/pom.xml
index 7c276da85..151310118 100644
--- a/jhotdraw-core/pom.xml
+++ b/jhotdraw-core/pom.xml
@@ -35,10 +35,28 @@
6.8.21
test
-
- ${project.groupId}
- jhotdraw-actions
- ${project.version}
-
-
+
+ ${project.groupId}
+ jhotdraw-actions
+ ${project.version}
+
+
+ dk.sdu.cbse
+ featuretracerlite
+ 1.1-SNAPSHOT
+ compile
+
+
+ junit
+ junit
+ 4.13.2
+ test
+
+
+ org.mockito
+ mockito-core
+ 4.11.0
+ test
+
+
\ No newline at end of file
diff --git a/jhotdraw-core/src/main/java/org/jhotdraw/draw/tool/SelectionTool.java b/jhotdraw-core/src/main/java/org/jhotdraw/draw/tool/SelectionTool.java
index 50f6c47e0..3a669ed47 100644
--- a/jhotdraw-core/src/main/java/org/jhotdraw/draw/tool/SelectionTool.java
+++ b/jhotdraw-core/src/main/java/org/jhotdraw/draw/tool/SelectionTool.java
@@ -7,10 +7,12 @@
*/
package org.jhotdraw.draw.tool;
+import dk.sdu.mmmi.featuretracer.lib.FeatureEntryPoint;
import org.jhotdraw.draw.figure.Figure;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Point2D;
+import java.util.Collections;
import java.util.HashSet;
import org.jhotdraw.draw.*;
import org.jhotdraw.draw.event.ToolAdapter;
@@ -118,6 +120,7 @@ public void boundsInvalidated(ToolEvent e) {
/**
* Creates a new instance.
*/
+ @FeatureEntryPoint(value = "SelectionTool")
public SelectionTool() {
tracker = getSelectAreaTracker();
trackerHandler = new TrackerHandler();
@@ -146,12 +149,14 @@ public boolean isSelectBehindEnabled() {
return isSelectBehindEnabled;
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void activate(DrawingEditor editor) {
super.activate(editor);
tracker.activate(editor);
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void deactivate(DrawingEditor editor) {
super.deactivate(editor);
@@ -160,136 +165,301 @@ public void deactivate(DrawingEditor editor) {
@Override
public void keyPressed(KeyEvent e) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.keyPressed(e);
}
}
@Override
public void keyReleased(KeyEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.keyReleased(evt);
}
}
@Override
public void keyTyped(KeyEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.keyTyped(evt);
}
}
@Override
public void mouseClicked(MouseEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.mouseClicked(evt);
}
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mouseDragged(MouseEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.mouseDragged(evt);
}
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mouseEntered(MouseEvent evt) {
super.mouseEntered(evt);
tracker.mouseEntered(evt);
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mouseExited(MouseEvent evt) {
super.mouseExited(evt);
tracker.mouseExited(evt);
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mouseMoved(MouseEvent evt) {
tracker.mouseMoved(evt);
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mouseReleased(MouseEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
tracker.mouseReleased(evt);
}
}
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void draw(Graphics2D g) {
tracker.draw(g);
}
+ /**
+ * Checks whether the associated drawing {@code view} is not null and is currently enabled.
+ *
+ * @return {@code true} if the drawing view is not null and is enabled; otherwise, {@code false}.
+ *
+ * @author Paweł Kasztura
+ */
+ protected boolean isViewNotNullAndEnabled() {
+ return getView() != null && getView().isEnabled();
+ }
+
+ /**
+ * Checks whether the given {@code figure} is not null and is selectable.
+ *
+ * @param figure Considered {@code Figure}
+ *
+ * @return {@code true} if the figure is not null and is selectable; otherwise, {@code false}.
+ *
+ * @author Paweł Kasztura
+ */
+ protected boolean isFigureNotNullAndSelectable(Figure figure) {
+ return figure != null && figure.isSelectable();
+ }
+
+ /**
+ * Checks whether the given {@code figure} is not null and is not selectable.
+ *
+ * @param figure Considered {@code Figure}
+ *
+ * @return {@code true} if the figure is not null and is not selectable; otherwise, {@code false}.
+ *
+ * @author Paweł Kasztura
+ */
+ protected boolean isFigureNotNullAndNotSelectable(Figure figure) {
+ return figure != null && !figure.isSelectable();
+ }
+
+ /**
+ * Invoked when a mouse button is pressed within the context of the {@code SelectionTool}.
+ * This method handles the mouse press event for selection operations and delegates
+ * processing to the appropriate tools and handles within the associated drawing {@code view}.
+ *
+ * @param evt The {@code MouseEvent} representing the mouse press event.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
@Override
public void mousePressed(MouseEvent evt) {
- if (getView() != null && getView().isEnabled()) {
+ if (isViewNotNullAndEnabled()) {
super.mousePressed(evt);
DrawingView view = getView();
Handle handle = view.findHandle(anchor);
- Tool newTracker = null;
- if (handle != null) {
- newTracker = getHandleTracker(handle);
- } else {
- Figure figure;
- Drawing drawing = view.getDrawing();
- Point2D.Double p = view.viewToDrawing(anchor);
- if (isSelectBehindEnabled()
- && (evt.getModifiersEx()
- & (InputEvent.ALT_DOWN_MASK | InputEvent.CTRL_DOWN_MASK)) != 0) {
- // Select a figure behind the current selection
- figure = view.findFigure(anchor);
- while (figure != null && !figure.isSelectable()) {
- figure = drawing.findFigureBehind(p, figure);
- }
- HashSet ignoredFigures = new HashSet<>(view.getSelectedFigures());
- ignoredFigures.add(figure);
- Figure figureBehind = view.getDrawing().findFigureBehind(
- view.viewToDrawing(anchor), ignoredFigures);
- if (figureBehind != null) {
- figure = figureBehind;
- }
- } else {
- // Note: The search sequence used here, must be
- // consistent with the search sequence used by the
- // DefaultHandleTracker, the DefaultSelectAreaTracker and DelegationSelectionTool.
- // If possible, continue to work with the current selection
- figure = null;
- if (isSelectBehindEnabled()) {
- for (Figure f : view.getSelectedFigures()) {
- if (f.contains(p)) {
- figure = f;
- break;
- }
- }
- }
- // If the point is not contained in the current selection,
- // search for a figure in the drawing.
- if (figure == null) {
- figure = view.findFigure(anchor);
- while (figure != null && !figure.isSelectable()) {
- figure = drawing.findFigureBehind(p, figure);
- }
- }
- }
- if (figure != null && figure.isSelectable()) {
- newTracker = getDragTracker(figure);
- } else {
- if (!evt.isShiftDown()) {
- view.clearSelection();
- view.setHandleDetailLevel(0);
- }
- newTracker = getSelectAreaTracker();
- }
+
+ Tool newTracker = createNewTracker(handle, evt, view);
+
+ setTracker(newTracker);
+ tracker.mousePressed(evt);
+ }
+ }
+
+ /**
+ * Creates a new tracker tool based on the provided handle, mouse event, and drawing {@code view}. This
+ * method determines the appropriate tracker based on the handle, figure, and user interaction,
+ * ensuring dynamic tool selection within the context of the {@code SelectionTool}. It also handles the event of
+ * not holding the {@code shift} key to clear the selection
+ *
+ * @param handle The handle associated with the mouse event, or null if none.
+ * @param evt The {@code MouseEvent} representing the user's interaction.
+ * @param view The {@code DrawingView} where the interaction occurs.
+ *
+ * @return A {@code Tool} instance representing the newly created tracker for the given context.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
+ protected Tool createNewTracker(Handle handle, MouseEvent evt, DrawingView view) {
+ Point2D.Double viewCoordinates = view.viewToDrawing(new Point());
+
+ if (handle != null) {
+ return getHandleTracker(handle);
+ }
+
+ Figure figure = getFigure(view, viewCoordinates, evt);
+
+ if (isFigureNotNullAndSelectable(figure)) {
+ return getDragTracker(figure);
+ }
+
+ if (!evt.isShiftDown()) {
+ view.clearSelection();
+ view.setHandleDetailLevel(0);
+ }
+
+ return getSelectAreaTracker();
+ }
+
+ /**
+ * Returns the {@code Figure} under the specified {@code view} coordinates within the given {@code DrawingView}.
+ * The method considers the option to select figures behind others when enabled and conditions for
+ * selecting behind are met. If the option is disabled or conditions are not met, it determines the
+ * {@code figure} in the current selection or the entire {@code drawing} at the specified {@code view} coordinates.
+ *
+ * @param view The {@code DrawingView} where the interaction occurs.
+ * @param viewCoordinates The {@code view} coordinates representing the point of interest.
+ * @param evt The {@code MouseEvent} triggering the {@code figure} retrieval.
+ *
+ * @return The {@code Figure} under the specified coordinates, considering selection options.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
+ protected Figure getFigure(DrawingView view, Point2D.Double viewCoordinates, MouseEvent evt) {
+ Drawing drawing = view.getDrawing();
+
+ if (shouldSelectBehind(evt)) {
+ return selectFigureBehind(view, viewCoordinates);
+ }
+
+ return getFigureFromCurrentSelectionOrDrawing(view, viewCoordinates, drawing);
+ }
+
+ /**
+ * Determines whether the selection behind other figures is appropriate based on the
+ * current state of the mouse event. Selection behind is enabled
+ * if the {@code CTRL} key is pressed during the mouse event.
+ *
+ * @param evt The {@code MouseEvent} to evaluate for key modifier and selection behind conditions.
+ *
+ * @return {@code true} if selection behind is enabled and the {@code CTRL} key is pressed;
+ * otherwise, {@code false}.
+ *
+ * @author Paweł Kasztura
+ */
+ protected boolean shouldSelectBehind(MouseEvent evt) {
+ return isSelectBehindEnabled() && evt.isControlDown();
+ }
+
+ /**
+ * Selects and returns the {@code figure} behind the specified anchor point within the given {@code DrawingView}.
+ * The method iteratively finds the nearest selectable {@code figure} behind the anchor point, excluding
+ * any figures already selected. If no {@code figure} is found behind, it considers the entire drawing.
+ *
+ * @param view The {@code DrawingView} where the interaction occurs.
+ * @param viewCoordinates The {@code view} coordinates representing the anchor point.
+ *
+ * @return The {@code Figure} behind the anchor point, excluding selected figures, or the nearest
+ * selectable {@code figure} in the entire drawing. {@code Null} if no such {@code figure} is found.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
+ protected Figure selectFigureBehind(DrawingView view, Point2D.Double viewCoordinates) {
+ Figure figure = view.findFigure(anchor);
+
+ while (isFigureNotNullAndNotSelectable(figure)) {
+ figure = view.getDrawing().findFigureBehind(viewCoordinates, figure);
+ }
+
+ HashSet ignoredFigures = new HashSet<>(view.getSelectedFigures());
+
+ ignoredFigures.add(figure);
+
+ Figure figureBehind = view.getDrawing().findFigureBehind(view.viewToDrawing(anchor), ignoredFigures);
+
+ return (figureBehind != null) ? figureBehind : figure;
+ }
+
+ /**
+ * Determines and returns the {@code Figure} under the specified {@code view} coordinates within the given {@code DrawingView},
+ * considering the current selection first. If no {@code figure} is found in the current selection, the method
+ * iteratively finds the nearest selectable {@code figure} behind the anchor point in the entire drawing.
+ *
+ * @param view The {@code DrawingView} where the interaction occurs.
+ * @param viewCoordinates The {@code view} coordinates representing the point of interest.
+ * @param drawing The {@code Drawing} containing the figures.
+ *
+ * @return The {@code Figure} under the specified coordinates within the current selection, or the nearest
+ * selectable {@code figure} in the entire drawing. {@code Null} if no such {@code figure} is found.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
+ protected Figure getFigureFromCurrentSelectionOrDrawing(DrawingView view, Point2D.Double viewCoordinates, Drawing drawing) {
+ Figure figure = findFigureInCurrentSelection(view, viewCoordinates);
+
+ if (figure == null) {
+ figure = view.findFigure(anchor);
+
+ while (isFigureNotNullAndNotSelectable(figure)) {
+ figure = drawing.findFigureBehind(viewCoordinates, figure);
}
- if (newTracker != null) {
- setTracker(newTracker);
+ }
+
+ return figure;
+ }
+
+ /**
+ * Finds and returns the {@code Figure} within the current selection that contains the specified {@code view} coordinates.
+ * If selection behind is enabled, the method iterates through the selected figures, checking if each
+ * figure contains the given coordinates and returns the first match.
+ *
+ * @param view The {@code DrawingView} containing the current selection.
+ * @param viewCoordinates The {@code view} coordinates representing the point of interest.
+ *
+ * @return The {@code Figure} within the current selection containing the specified coordinates, or {@code null} if not found.
+ *
+ * @author Paweł Kasztura
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
+ protected Figure findFigureInCurrentSelection(DrawingView view, Point2D.Double viewCoordinates) {
+ if (isSelectBehindEnabled()) {
+ for (Figure f : view.getSelectedFigures()) {
+ if (f.contains(viewCoordinates)) {
+ return f;
+ }
}
- tracker.mousePressed(evt);
}
+ return null;
}
+ /**
+ * Sets the active {@code tool} for tracking user interactions.
+ *
+ * @param newTracker The new {@code Tool} instance to be set as the active tracker.
+ */
+ @FeatureEntryPoint(value = "SelectionTool")
protected void setTracker(Tool newTracker) {
if (tracker != null) {
tracker.deactivate(getEditor());
@@ -306,11 +476,20 @@ protected void setTracker(Tool newTracker) {
* Method to get a {@code HandleTracker} which handles user interaction
* for the specified handle.
*/
+ @FeatureEntryPoint(value = "SelectionTool")
protected HandleTracker getHandleTracker(Handle handle) {
if (handleTracker == null) {
handleTracker = new DefaultHandleTracker();
}
- handleTracker.setHandles(handle, getView().getCompatibleHandles(handle));
+
+ DrawingView view = getView();
+ if (view != null) {
+ handleTracker.setHandles(handle, view.getCompatibleHandles(handle));
+ } else {
+ // Handle the case where getView() returns null (provide a default behavior or throw an exception)
+ handleTracker.setHandles(handle, Collections.emptyList());
+ }
+
return handleTracker;
}
@@ -330,6 +509,7 @@ protected DragTracker getDragTracker(Figure f) {
* Method to get a {@code SelectAreaTracker} which handles user interaction
* for selecting an area on the drawing.
*/
+ @FeatureEntryPoint(value = "SelectionTool")
protected SelectAreaTracker getSelectAreaTracker() {
if (selectAreaTracker == null) {
selectAreaTracker = new DefaultSelectAreaTracker();
diff --git a/jhotdraw-core/src/main/resources/org/jhotdraw/draw/Labels.properties b/jhotdraw-core/src/main/resources/org/jhotdraw/draw/Labels.properties
index 21b22b608..ed9147a84 100644
--- a/jhotdraw-core/src/main/resources/org/jhotdraw/draw/Labels.properties
+++ b/jhotdraw-core/src/main/resources/org/jhotdraw/draw/Labels.properties
@@ -1,54 +1,34 @@
actions.largeIcon=${imageDir}/actions.png
actions.text=Actions
actions.toolTipText=Actions
-edit.align.text=Align
-edit.alignEast.accelerator=
-edit.alignEast.mnemonic=
-edit.alignEast.text=
-edit.alignEast.largeIcon=${imageDir}/alignEast.png
-edit.alignEast.toolTipText=Align Right
-edit.alignHorizontal.accelerator=
-edit.alignHorizontal.mnemonic=
-edit.alignHorizontal.text=
-edit.alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
-edit.alignHorizontal.toolTipText=Align Horizontal
-window.alignmentToolBar.title=Align
-edit.alignNorth.accelerator=
-edit.alignNorth.mnemonic=
-edit.alignNorth.text=
-edit.alignNorth.largeIcon=${imageDir}/alignNorth.png
-edit.alignNorth.toolTipText=Align Top
-edit.alignSouth.accelerator=
-edit.alignSouth.mnemonic=
-edit.alignSouth.text=
-edit.alignSouth.largeIcon=${imageDir}/alignSouth.png
-edit.alignSouth.toolTipText=Align Bottom
-edit.alignVertical.accelerator=
-edit.alignVertical.mnemonic=
-edit.alignVertical.text=
-edit.alignVertical.largeIcon=${imageDir}/alignVertical.png
-edit.alignVertical.toolTipText=Align Vertical
-edit.alignWest.accelerator=
-edit.alignWest.mnemonic=
-edit.alignWest.text=
-edit.alignWest.largeIcon=${imageDir}/alignWest.png
-edit.alignWest.toolTipText=Align Left
-attribute.opacity.text=Opacity
-attribute.opacity.toolTipText=Opacity
-attribute.backgroundColor.toolTipText=Background Color
-attribute.backgroundColor.text=Background:
attribute.backgroundColor.color=Color:
+attribute.backgroundColor.text=Background:
+attribute.backgroundColor.toolTipText=Background Color
attribute.backgroundColor.transparency=Transparency
attribute.backgroundColor.transparent=Transparent
attribute.backgroundColor.userDefined=User Defined
attribute.backgroundColor.white=White
attribute.backgroundColor=Background:
+attribute.canvasFillColor.largeIcon=${imageDir}/attributeFillColor.png
+attribute.canvasFillColor.text=Canvas Fill Color
+attribute.canvasFillOpacity.text=Canvas Opacity
+attribute.canvasHeight.text=Canvas Height
+attribute.canvasWidth.text=Canvas Width
+attribute.color.colorChooser.toolTipText=Open Color Chooser
+attribute.color.grayComponents.toolTipText=Brightness: {0} %
+attribute.color.hsbComponents.toolTipText=Hue: {0}\u00B0
Saturation: {1} %
Brightness: {2} %,
attribute.color.noColor.toolTipText=No Color
+attribute.color.rgbComponents.toolTipText={0}, {1}, {2}
+attribute.color.rgbHexComponents.toolTipText=#{0}
+attribute.color.rgbPercentageComponents.toolTipText={0} %, {1} %, {2} %,
+attribute.color.text=Color
+attribute.endDecoration.text=End of Line Decoration
attribute.fillColor.largeIcon=${imageDir}/attributeFillColor.png
-attribute.fillColor.toolTipText=Fill Color
attribute.fillColor.text=Fill Color
+attribute.fillColor.toolTipText=Fill Color
attribute.font.largeIcon=${imageDir}/attributeFont.png
attribute.font.toolTipText=Font
+attribute.fontFace.text=Font Face
attribute.fontSize.text=Font Size
attribute.fontStyle.bold.largeIcon=${imageDir}/attributeFontBold.png
attribute.fontStyle.bold.text=Bold
@@ -61,16 +41,23 @@ attribute.fontStyle.underline.largeIcon=${imageDir}/attributeFontUnderline.png
attribute.fontStyle.underline.text=Underline
attribute.fontStyle.underline.toolTipText=Underline
attribute.fontStyle.underline=Underline
+attribute.opacity.text=Opacity
+attribute.opacity.toolTipText=Opacity
+attribute.pathClosed.text=Path closed
attribute.roundRectRadius=Rectangle rounding
+attribute.startDecoration.text=Start of Line Decoration
attribute.strokeCap.butt=Butt
attribute.strokeCap.largeIcon=${imageDir}/attributeStrokeCap.png
attribute.strokeCap.round=Round
attribute.strokeCap.square=Square
attribute.strokeCap.toolTipText=Line Caps
attribute.strokeColor.largeIcon=${imageDir}/attributeStrokeColor.png
+attribute.strokeColor.text=Line Color
attribute.strokeColor.toolTipText=Line Color
attribute.strokeDashes.largeIcon=${imageDir}/attributeStrokeDashes.png
+attribute.strokeDashes.text=Stroke Dashes
attribute.strokeDashes.toolTipText=Line Dashes
+attribute.strokeDashPhase.text=Stroke Dash Phase
attribute.strokeDecoration.largeIcon=${imageDir}/attributeStrokeDecoration.png
attribute.strokeDecoration.toolTipText=Arrow Tips
attribute.strokeJoin.bevel=Bevel
@@ -81,56 +68,87 @@ attribute.strokeJoin.toolTipText=Stroke Joint
attribute.strokePlacement.center=Center
attribute.strokePlacement.centerFilled=Center Filled
attribute.strokePlacement.centerUnfilled=Center Unfilled
-attribute.strokePlacement.largeIcon=${imageDir}/attributeStrokePlacement.png
attribute.strokePlacement.inside=Inside
attribute.strokePlacement.insideFilled=Inside Filled
attribute.strokePlacement.insideUnfilled=Inside unfilled
+attribute.strokePlacement.largeIcon=${imageDir}/attributeStrokePlacement.png
attribute.strokePlacement.outside=Outside
attribute.strokePlacement.outsideFilled=Outside Filled
attribute.strokePlacement.outsideUnfilled=Outside Unfilled
attribute.strokePlacement.toolTipText=Stroke Placement
attribute.strokeType.basic=Basic Stroke
attribute.strokeType.double=Double Stroke
-attribute.strokeType.toolTipText=Stroke Type
attribute.strokeType.largeIcon=${imageDir}/attributeStrokeType.png
+attribute.strokeType.text=Stroke Type
+attribute.strokeType.toolTipText=Stroke Type
attribute.strokeWidth.largeIcon=${imageDir}/attributeStrokeWidth.png
+attribute.strokeWidth.text=Stroke Width
attribute.strokeWidth.toolTipText=Stroke Width
attribute.strokeWidth=Stroke Width
+attribute.text.text=Text
attribute.text=Attribute
attribute.textColor.largeIcon=${imageDir}/attributeTextColor.png
attribute.textColor.toolTipText=Text Color
+attribute.transform.text=Transformation
+attribute.unclosedPathFilled=Unclosed path filled
+attribute.windingRule.text=Winding Rule
+canvasSettings.text=Canvas Settings
+color.text=Color:
+ConnectionFigure.undoConnect.text=Connect
+edit.align.text=Align
+edit.alignEast.accelerator=
+edit.alignEast.largeIcon=${imageDir}/alignEast.png
+edit.alignEast.mnemonic=
+edit.alignEast.text=
+edit.alignEast.toolTipText=Align Right
+edit.alignHorizontal.accelerator=
+edit.alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
+edit.alignHorizontal.mnemonic=
+edit.alignHorizontal.text=
+edit.alignHorizontal.toolTipText=Align Horizontal
+edit.alignNorth.accelerator=
+edit.alignNorth.largeIcon=${imageDir}/alignNorth.png
+edit.alignNorth.mnemonic=
+edit.alignNorth.text=
+edit.alignNorth.toolTipText=Align Top
+edit.alignSouth.accelerator=
+edit.alignSouth.largeIcon=${imageDir}/alignSouth.png
+edit.alignSouth.mnemonic=
+edit.alignSouth.text=
+edit.alignSouth.toolTipText=Align Bottom
+edit.alignVertical.accelerator=
+edit.alignVertical.largeIcon=${imageDir}/alignVertical.png
+edit.alignVertical.mnemonic=
+edit.alignVertical.text=
+edit.alignVertical.toolTipText=Align Vertical
+edit.alignWest.accelerator=
+edit.alignWest.largeIcon=${imageDir}/alignWest.png
+edit.alignWest.mnemonic=
+edit.alignWest.text=
+edit.alignWest.toolTipText=Align Left
edit.applyAttributes.accelerator=
-edit.applyAttributes.mnemonic=
+edit.applyAttributes.icon=${imageDir}/attributesApply.png
edit.applyAttributes.largeIcon=${imageDir}/attributesApply.png
+edit.applyAttributes.mnemonic=
+edit.applyAttributes.smallIcon=${imageDir}/attributesApply.png
edit.applyAttributes.text=Apply attributes
edit.applyAttributes.toolTipText=Apply attributes
-edit.pickAttributes.accelerator=
-edit.pickAttributes.mnemonic=
-edit.pickAttributes.largeIcon=${imageDir}/attributesPick.png
-edit.pickAttributes.text=Pick attributes
-edit.pickAttributes.toolTipText=Pick attributes
-window.attributesToolBar.title=Attributes
-handle.bezierControlPoint.cubicColinear.value=Colinear Control Point
-handle.bezierControlPoint.cubicUnconstrained.value=Unconstrained Control Point
edit.bezierNode.changeType.text=Change Point Type
-handle.bezierNode.cubic.value=Cubic Curve Point
-handle.bezierNode.linear.value=Edge Point
edit.bezierNode.movePoint.text=Move Point
-handle.bezierNode.quadratic.value=Quadratic Curve Point
-handle.bezierNode.toolTipText={0}
${handle.bezierControlPoint.changeType.text}
edit.bezierPath.joinSegments.text=Join Path Segments
edit.bezierPath.splitSegment.text=Split Path Segment
-handle.bezierControlPoint.quadratic.value=Control Point
edit.bringToFront.accelerator=
-edit.bringToFront.mnemonic=
+edit.bringToFront.icon=
edit.bringToFront.largeIcon=${imageDir}/moveToFront.png
+edit.bringToFront.mnemonic=
+edit.bringToFront.smallIcon=
edit.bringToFront.text=Bring to Front
edit.bringToFront.toolTipText=Bring to Front
-canvasSettings.text=Canvas Settings
-color.text=Color:
-ConnectionFigure.undoConnect.text=Connect
edit.createArrow.largeIcon=${imageDir}/createArrow.png
edit.createArrow.toolTipText=Arrow
+edit.createConnectionFigure.text=Create Connection
+edit.createCurvedConnection.largeIcon=${imageDir}/createCurvedConnection.png
+edit.createCurvedConnection.toolTipText=Curved Connection
edit.createDiamond.largeIcon=${imageDir}/createDiamond.png
edit.createDiamond.toolTipText=Diamond
edit.createElbowConnection.largeIcon=${imageDir}/createElbowConnection.png
@@ -144,6 +162,7 @@ edit.createLine.largeIcon=${imageDir}/createLine.png
edit.createLine.toolTipText=Line
edit.createLineConnection.largeIcon=${imageDir}/createLineConnection.png
edit.createLineConnection.text=Connection
+edit.createLineConnection.toolTipText=Line Connection
edit.createPolygon.largeIcon=${imageDir}/createPolygon.png
edit.createPolygon.toolTipText=Polygon
edit.createRectangle.largeIcon=${imageDir}/createRectangle.png
@@ -158,88 +177,129 @@ edit.createTextArea.largeIcon=${imageDir}/createTextArea.png
edit.createTextArea.toolTipText=Text Area
edit.createTriangle.largeIcon=${imageDir}/createTriangle.png
edit.createTriangle.toolTipText=Triangle
-window.drawToolBar.title=Draw
edit.delete.text=Delete
-edit.paste.text=Paste
-edit.selectSame.accelerator=
-edit.selectSame.largeIcon=${imageDir}/spacerIcon.png
-edit.selectSame.mnemonic
-edit.selectSame.text=Select Same
-edit.selectSame.toolTipText=
-file.failedToLoadImage.message=Couldn''t load image from file "{0}".
-handle.fontSize.toolTipText=Font Size
-imageDir=/org/jhotdraw/draw/action/images
-edit.moveEast.largeIcon=${imageDir}/moveEast.png
-edit.moveEast.toolTipText=Move Right
-edit.moveEast.accelerator=
-edit.moveEast.mnemonic=
-edit.moveEast.text=
-edit.moveNorth.largeIcon=${imageDir}/moveNorth.png
-edit.moveNorth.toolTipText=Move Up
-edit.moveNorth.accelerator=
-edit.moveNorth.mnemonic=
-edit.moveNorth.text=
-edit.moveSouth.largeIcon=${imageDir}/moveSouth.png
-edit.moveSouth.toolTipText=Move Down
-edit.moveSouth.accelerator=
-edit.moveSouth.mnemonic=
-edit.moveSouth.text=
-edit.moveWest.largeIcon=${imageDir}/moveWest.png
-edit.moveWest.toolTipText=Move Left
-edit.moveWest.accelerator=
-edit.moveWest.mnemonic=
-edit.moveWest.text=
-edit.moveConstrainedEast.largeIcon=
-edit.moveConstrainedEast.toolTipText=Move Constrained Right
+edit.duplicate.text=Duplicate
+edit.groupSelection.accelerator=
+edit.groupSelection.icon=
+edit.groupSelection.largeIcon=${imageDir}/selectionGroup.png
+edit.groupSelection.mnemonic=
+edit.groupSelection.smallIcon=
+edit.groupSelection.text=Group
+edit.groupSelection.toolTipText=
edit.moveConstrainedEast.accelerator=
+edit.moveConstrainedEast.icon=
+edit.moveConstrainedEast.largeIcon=
edit.moveConstrainedEast.mnemonic=
+edit.moveConstrainedEast.smallIcon=
edit.moveConstrainedEast.text=
-edit.moveConstrainedNorth.largeIcon=
-edit.moveConstrainedNorth.toolTipText=Move Constrained Up
+edit.moveConstrainedEast.toolTipText=Move Constrained Right
edit.moveConstrainedNorth.accelerator=
+edit.moveConstrainedNorth.icon=
+edit.moveConstrainedNorth.largeIcon=
edit.moveConstrainedNorth.mnemonic=
+edit.moveConstrainedNorth.smallIcon=
edit.moveConstrainedNorth.text=
-edit.moveConstrainedSouth.largeIcon=
-edit.moveConstrainedSouth.toolTipText=Move Constrained Down
+edit.moveConstrainedNorth.toolTipText=Move Constrained Up
edit.moveConstrainedSouth.accelerator=
+edit.moveConstrainedSouth.icon=
+edit.moveConstrainedSouth.largeIcon=
edit.moveConstrainedSouth.mnemonic=
+edit.moveConstrainedSouth.smallIcon=
edit.moveConstrainedSouth.text=
-edit.moveConstrainedWest.largeIcon=
-edit.moveConstrainedWest.toolTipText=Move Constrained Left
+edit.moveConstrainedSouth.toolTipText=Move Constrained Down
edit.moveConstrainedWest.accelerator=
+edit.moveConstrainedWest.icon=
+edit.moveConstrainedWest.largeIcon=
edit.moveConstrainedWest.mnemonic=
+edit.moveConstrainedWest.smallIcon=
edit.moveConstrainedWest.text=
-handle.resize.toolTipText=Resize
-handle.rotate.toolTipText=Rotate
-handle.roundRectangleRadius.toolTipText=Round-Rectangle Radius
-edit.groupSelection.accelerator=
-edit.groupSelection.mnemonic=
-edit.groupSelection.largeIcon=${imageDir}/selectionGroup.png
-edit.groupSelection.text=Group
-edit.groupSelection.toolTipText=
-selectionTool.largeIcon=${imageDir}/selectionTool.png
-selectionTool.toolTipText=Selection Tool
-edit.ungroupSelection.accelerator=
-edit.ungroupSelection.mnemonic=
-edit.ungroupSelection.largeIcon=${imageDir}/selectionUngroup.png
-edit.ungroupSelection.text=Ungroup
-edit.ungroupSelection.toolTipText=
+edit.moveConstrainedWest.toolTipText=Move Constrained Left
+edit.moveEast.accelerator=
+edit.moveEast.icon=${imageDir}/moveEast.png
+edit.moveEast.largeIcon=${imageDir}/moveEast.png
+edit.moveEast.mnemonic=
+edit.moveEast.smallIcon=${imageDir}/moveEast.png
+edit.moveEast.text=
+edit.moveEast.toolTipText=Move Right
+edit.moveNorth.accelerator=
+edit.moveNorth.icon=${imageDir}/moveNorth.png
+edit.moveNorth.largeIcon=${imageDir}/moveNorth.png
+edit.moveNorth.mnemonic=
+edit.moveNorth.smallIcon=${imageDir}/moveNorth.png
+edit.moveNorth.text=
+edit.moveNorth.toolTipText=Move Up
+edit.moveSouth.accelerator=
+edit.moveSouth.icon=${imageDir}/moveSouth.png
+edit.moveSouth.largeIcon=${imageDir}/moveSouth.png
+edit.moveSouth.mnemonic=
+edit.moveSouth.smallIcon=${imageDir}/moveSouth.png
+edit.moveSouth.text=
+edit.moveSouth.toolTipText=Move Down
+edit.moveWest.accelerator=
+edit.moveWest.icon=${imageDir}/moveWest.png
+edit.moveWest.largeIcon=${imageDir}/moveWest.png
+edit.moveWest.mnemonic=
+edit.moveWest.smallIcon=${imageDir}/moveWest.png
+edit.moveWest.text=
+edit.moveWest.toolTipText=Move Left
+edit.paste.text=Paste
+edit.pickAttributes.accelerator=
+edit.pickAttributes.icon=${imageDir}/attributesPick.png
+edit.pickAttributes.largeIcon=${imageDir}/attributesPick.png
+edit.pickAttributes.mnemonic=
+edit.pickAttributes.smallIcon=${imageDir}/attributesPick.png
+edit.pickAttributes.text=Pick attributes
+edit.pickAttributes.toolTipText=Pick attributes
+edit.selectSame.accelerator=
+edit.selectSame.icon=
+edit.selectSame.largeIcon=${imageDir}/spacerIcon.png
+edit.selectSame.mnemonic
+edit.selectSame.smallIcon=
+edit.selectSame.text=Select Same
+edit.selectSame.toolTipText=
edit.sendToBack.accelerator=
-edit.sendToBack.mnemonic=
+edit.sendToBack.icon=
edit.sendToBack.largeIcon=${imageDir}/moveToBack.png
+edit.sendToBack.mnemonic=
+edit.sendToBack.smallIcon=
edit.sendToBack.text=Send to Back
edit.sendToBack.toolTipText=Send to Back
-TextFigure.defaultText=Text
-handle.textOverflow.toolTipText=Text Overflow
edit.transform.text=Transformation
+edit.ungroupSelection.accelerator=
+edit.ungroupSelection.icon=
+edit.ungroupSelection.largeIcon=${imageDir}/selectionUngroup.png
+edit.ungroupSelection.mnemonic=
+edit.ungroupSelection.smallIcon=
+edit.ungroupSelection.text=Ungroup
+edit.ungroupSelection.toolTipText=
+file.failedToLoadImage.message=Couldn''t load image from file "{0}".
+handle.bezierControlPoint.changeType.text.default=Ctrl+Click changes point type.
+handle.bezierControlPoint.changeType.text.mac=Alt+Click changes point type.
+handle.bezierControlPoint.changeType.text=${handle.bezierControlPoint.changeType.text.[$os]}
+handle.bezierControlPoint.cubicColinear.value=Colinear Control Point
+handle.bezierControlPoint.cubicUnconstrained.value=Unconstrained Control Point
+handle.bezierControlPoint.quadratic.toolTipText=Control Point
+handle.bezierControlPoint.quadratic.value=Control Point
+handle.bezierControlPoint.toolTipText={0}
${handle.bezierControlPoint.changeType.text}
+handle.bezierNode.cubic.value=Cubic Curve Point
+handle.bezierNode.linear.value=Edge Point
+handle.bezierNode.quadratic.value=Quadratic Curve Point
+handle.bezierNode.toolTipText={0}
${handle.bezierControlPoint.changeType.text}
+handle.fontSize.toolTipText=Font Size
+handle.resize.toolTipText=Resize
+handle.rotate.toolTipText=Rotate
+handle.roundRectangleRadius.toolTipText=Round-Rectangle Radius
+handle.textOverflow.toolTipText=Text Overflow
handle.transform.toolTipText=Scale
+selectionTool.largeIcon=${imageDir}/selectionTool.png
+selectionTool.toolTipText=Selection Tool
+TextFigure.defaultText=Text
view.editCanvas.accelerator=
view.editCanvas.largeIcon=
view.editCanvas.mnemonic=
view.editCanvas.text=Edit Canvas
view.editCanvas.toolTipText=
view.editGrid.accelerator=
-window.editCanvas.title=Edit Canvas
view.editGrid.largeIcon=
view.editGrid.mnemonic=
view.editGrid.text=Edit Grid
@@ -251,8 +311,10 @@ view.grid.text=Grid
view.grid.theta.text=Angle
view.grid.width.text=Width
view.increaseHandleDetailLevel.accelerator=
-view.increaseHandleDetailLevel.mnemonic=
+view.increaseHandleDetailLevel.icon=
view.increaseHandleDetailLevel.largeIcon=
+view.increaseHandleDetailLevel.mnemonic=
+view.increaseHandleDetailLevel.smallIcon=
view.increaseHandleDetailLevel.text=Increase Handle Detail Level
view.increaseHandleDetailLevel.toolTipText=
view.largeIcon=
@@ -265,59 +327,27 @@ view.toggleGrid.placard.largeIcon=${imageDir}/alignGridSmall.png
view.toggleGrid.placard.toolTipText=Toggle Grid
view.toggleGrid.text=Toggle Grid
view.toggleGrid.toolTipText=Toggle Grid
-view.zoomFactor.mnemonic=
+view.zoomFactor.icon=
view.zoomFactor.largeIcon=
+view.zoomFactor.mnemonic=
+view.zoomFactor.smallIcon=
view.zoomFactor.text=Zoom
view.zoomFactor.toolTipText=
-window.alignmentToolBar.title=Align
-window.attributesToolBar.title=Attributes
-window.drawToolBar.title=Draw
-window.standardToolBar.title=Standard
windingRule.evenOdd=Even Odd
windingRule.nonZero=Non Zero
windingRule.text=Winding Rule
+window.alignmentToolBar.title=Align
+window.attributesToolBar.title=Attributes
window.close.accelerator=
window.close.largeIcon=
window.close.mnemonic=c
window.close.text=Close
+window.drawToolBar.title=Draw
+window.editCanvas.title=Edit Canvas
window.new.accelerator=
window.new.largeIcon=
window.new.mnemonic=
window.new.text=New Window
-attribute.opacity.toolTipText=Opacity
-handle.bezierControlPoint.toolTipText={0}
${handle.bezierControlPoint.changeType.text}
-handle.bezierControlPoint.changeType.text.default=Ctrl+Click changes point type.
-handle.bezierControlPoint.changeType.text.mac=Alt+Click changes point type.
-handle.bezierControlPoint.changeType.text=${handle.bezierControlPoint.changeType.text.[$os]}
-handle.bezierControlPoint.quadratic.toolTipText=Control Point
-edit.createLineConnection.toolTipText=Line Connection
-edit.createConnectionFigure.text=Create Connection
-attribute.canvasFillOpacity.text=Canvas Opacity
-attribute.strokeWidth.text=Stroke Width
-attribute.canvasFillColor.largeIcon=${imageDir}/attributeFillColor.png
-attribute.text.text=Text
-attribute.fontFace.text=Font Face
-attribute.transform.text=Transformation
-attribute.strokeDashes.text=Stroke Dashes
-edit.duplicate.text=Duplicate
-attribute.color.colorChooser.toolTipText=Open Color Chooser
-attribute.windingRule.text=Winding Rule
-attribute.color.text=Color
-edit.createCurvedConnection.largeIcon=${imageDir}/createCurvedConnection.png
-edit.createCurvedConnection.toolTipText=Curved Connection
-attribute.canvasWidth.text=Canvas Width
-attribute.canvasHeight.text=Canvas Height
-attribute.unclosedPathFilled=Unclosed path filled
-attribute.pathClosed.text=Path closed
-attribute.startDecoration.text=Start of Line Decoration
-attribute.endDecoration.text=End of Line Decoration
-attribute.strokeType.text=Stroke Type
+window.standardToolBar.title=Standard
-attribute.color.hsbComponents.toolTipText=Hue: {0}\u00B0
Saturation: {1} %
Brightness: {2} %,
-attribute.color.grayComponents.toolTipText=Brightness: {0} %
-attribute.strokeColor.text=Line Color
-attribute.color.rgbComponents.toolTipText={0}, {1}, {2}
-attribute.color.rgbHexComponents.toolTipText=#{0}
-attribute.color.rgbPercentageComponents.toolTipText={0} %, {1} %, {2} %,
-attribute.canvasFillColor.text=Canvas Fill Color
-attribute.strokeDashPhase.text=Stroke Dash Phase
+imageDir=/org/jhotdraw/draw/action/images
\ No newline at end of file
diff --git a/jhotdraw-core/src/main/resources/org/jhotdraw/undo/Labels.properties b/jhotdraw-core/src/main/resources/org/jhotdraw/undo/Labels.properties
index 449bf5175..129b4a664 100644
--- a/jhotdraw-core/src/main/resources/org/jhotdraw/undo/Labels.properties
+++ b/jhotdraw-core/src/main/resources/org/jhotdraw/undo/Labels.properties
@@ -2,15 +2,19 @@
edit.redo.accelerator.default=ctrl Y
edit.redo.accelerator.mac=meta shift Z
edit.redo.accelerator=${edit.redo.accelerator.[$os]}
+edit.redo.icon=
edit.redo.largeIcon=${image.dir}/editRedo.png
edit.redo.mnemonic=
+edit.redo.smallIcon=
edit.redo.text=Redo
edit.redo.toolTipText=
edit.undo.accelerator.default=ctrl Z
edit.undo.accelerator.mac=meta Z
edit.undo.accelerator=${edit.undo.accelerator.[$os]}
+edit.undo.icon=
edit.undo.largeIcon=${image.dir}/editUndo.png
edit.undo.mnemonic=
+edit.undo.smallIcon=
edit.undo.text=Undo
edit.undo.toolTipText=
image.dir=/org/jhotdraw/undo/images
diff --git a/jhotdraw-core/src/test/java/org/jhotdraw/draw/tool/SelectionToolTest.java b/jhotdraw-core/src/test/java/org/jhotdraw/draw/tool/SelectionToolTest.java
new file mode 100644
index 000000000..19fd56ec6
--- /dev/null
+++ b/jhotdraw-core/src/test/java/org/jhotdraw/draw/tool/SelectionToolTest.java
@@ -0,0 +1,119 @@
+package org.jhotdraw.draw.tool;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.awt.Canvas;
+import java.awt.Component;
+import java.awt.MouseInfo;
+import java.awt.Point;
+import java.awt.event.InputEvent;
+import java.awt.event.MouseEvent;
+
+import org.jhotdraw.draw.DrawingEditor;
+import org.jhotdraw.draw.DrawingView;
+import org.jhotdraw.draw.handle.Handle;
+import org.junit.Test;
+import org.mockito.Mock;
+
+public class SelectionToolTest {
+
+ @Mock
+ private DrawingView drawingView;
+ @Mock
+ private DrawingEditor drawingEditor;
+
+ @Test
+ public void testShouldSelectBehind() {
+ DrawingEditor mockEditor = mock(DrawingEditor.class);
+
+ SelectionTool selectionTool = new SelectionTool();
+
+ selectionTool.activate(mockEditor);
+
+ MouseEvent ctrlEvent = mock(MouseEvent.class);
+ when(ctrlEvent.isControlDown()).thenReturn(true);
+ assertTrue(selectionTool.shouldSelectBehind(ctrlEvent));
+
+ MouseEvent altEvent = mock(MouseEvent.class);
+ when(altEvent.isAltDown()).thenReturn(true);
+ assertFalse(selectionTool.shouldSelectBehind(altEvent));
+
+ MouseEvent noModifierEvent = mock(MouseEvent.class);
+ when(noModifierEvent.getModifiers()).thenReturn(0);
+ assertFalse(selectionTool.shouldSelectBehind(noModifierEvent));
+ }
+
+ @Test
+ public void testActivateAndDeactivate() {
+ DrawingEditor mockEditor = mock(DrawingEditor.class);
+
+ SelectionTool selectionTool = new SelectionTool();
+
+ selectionTool.activate(mockEditor);
+ assertTrue(selectionTool.isActive());
+ selectionTool.deactivate(mockEditor);
+ assertFalse(selectionTool.isActive());
+ }
+
+ @Test
+ public void testCreateNewTrackerWithHandle() {
+
+ SelectionTool selectionTool = new SelectionTool();
+
+ MouseEvent mockEvent = mock(MouseEvent.class);
+
+ drawingView = mock(DrawingView.class);
+ when(drawingView.isEnabled()).thenReturn(true);
+
+ drawingEditor = mock(DrawingEditor.class);
+ when(drawingEditor.getActiveView()).thenReturn(drawingView);
+
+ selectionTool.activate(drawingEditor);
+
+ Handle mockHandle = mock(Handle.class);
+
+ Point testPoint = new Point(10, 20);
+
+ when(drawingView.findHandle(testPoint)).thenReturn(mockHandle);
+ when(selectionTool.getView()).thenReturn(drawingView);
+
+ Tool result = selectionTool.createNewTracker(mockHandle, mockEvent, drawingView);
+
+ verify(drawingView).findHandle(testPoint);
+
+ assertNotNull(result); // assuming createNewTracker returns a Tool
+ }
+
+ @Test
+ public void testMousePressed_ClearSelectionWithoutShift() {
+
+ SelectionTool selectionTool = new SelectionTool();
+
+ drawingView = mock(DrawingView.class);
+
+ drawingEditor = mock(DrawingEditor.class);
+ when(drawingEditor.getActiveView()).thenReturn(drawingView);
+
+ selectionTool.activate(drawingEditor);
+
+ MouseEvent mouseEvent = mock(MouseEvent.class);
+
+ when(mouseEvent.isShiftDown()).thenReturn(false);
+ when(mouseEvent.getPoint()).thenReturn(new Point());
+ when(drawingView.getSelectionCount()).thenReturn(1);
+
+ when(selectionTool.getView()).thenReturn(drawingView);
+
+ selectionTool.mousePressed(mouseEvent);
+
+ verify(drawingView, times(1)).clearSelection();
+ verify(drawingView, times(1)).setHandleDetailLevel(0);
+ }
+
+}
diff --git a/jhotdraw-datatransfer/jhotdraw-datatransfer.iml b/jhotdraw-datatransfer/jhotdraw-datatransfer.iml
index ec1ce387c..5e4d4c39a 100644
--- a/jhotdraw-datatransfer/jhotdraw-datatransfer.iml
+++ b/jhotdraw-datatransfer/jhotdraw-datatransfer.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-gui/jhotdraw-gui.iml b/jhotdraw-gui/jhotdraw-gui.iml
index e9a8dd3b6..178fd791b 100644
--- a/jhotdraw-gui/jhotdraw-gui.iml
+++ b/jhotdraw-gui/jhotdraw-gui.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-samples/jhotdraw-samples-mini/jhotdraw-samples-mini.iml b/jhotdraw-samples/jhotdraw-samples-mini/jhotdraw-samples-mini.iml
index 53177da23..8f5dfb87a 100644
--- a/jhotdraw-samples/jhotdraw-samples-mini/jhotdraw-samples-mini.iml
+++ b/jhotdraw-samples/jhotdraw-samples-mini/jhotdraw-samples-mini.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/jhotdraw-samples-misc.iml b/jhotdraw-samples/jhotdraw-samples-misc/jhotdraw-samples-misc.iml
index b6518b140..a121b0930 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/jhotdraw-samples-misc.iml
+++ b/jhotdraw-samples/jhotdraw-samples-misc/jhotdraw-samples-misc.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/pom.xml b/jhotdraw-samples/jhotdraw-samples-misc/pom.xml
index 1d63de64d..7d047f4b7 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/pom.xml
+++ b/jhotdraw-samples/jhotdraw-samples-misc/pom.xml
@@ -8,7 +8,24 @@
jhotdraw-samples-misc
jar
+
+
+ github
+ GitHub external Packages
+ https://maven.pkg.github.com/MetaSoc/MavenRepository
+
+
+
+ dk.sdu.cbse
+ featuretracerlite
+ 1.1-SNAPSHOT
+
+
+ org.aspectj
+ aspectjweaver
+ 1.9.9
+
${project.groupId}
jhotdraw-core
@@ -24,11 +41,6 @@
htmlunit
2.37.0
-
- org.aspectj
- aspectjweaver
- 1.9.9
-
${project.groupId}
jhotdraw-app
@@ -40,26 +52,29 @@
4.13.2
test
+
+ org.jhotdraw
+ jhotdraw-api
+ 9.1-SNAPSHOT
+ compile
+
+
-
- org.codehaus.mojo
- exec-maven-plugin
- 3.1.0
-
-
- run-java
- install
-
- java
-
-
-
-
- org.jhotdraw.samples.svg.Main
-
-
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.2
+
+
+ -javaagent:"C:\Users\blito\.m2\repository\org\aspectj\aspectjweaver\1.9.9\aspectjweaver-1.9.9.jar"
+ --add-opens java.base/java.lang=ALL-UNNAMED
+
+ true
+ always
+
+
\ No newline at end of file
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/Main.java b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/Main.java
index 11e156729..23fe6dbda 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/Main.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/java/org/jhotdraw/samples/svg/Main.java
@@ -7,6 +7,7 @@
*/
package org.jhotdraw.samples.svg;
+import dk.sdu.mmmi.featuretracer.lib.FeatureEntryPoint;
import org.jhotdraw.api.app.Application;
import org.jhotdraw.app.OSXApplication;
import org.jhotdraw.app.SDIApplication;
@@ -26,6 +27,8 @@ public class Main {
/**
* Creates a new instance.
*/
+
+ @FeatureEntryPoint(value = "Main")
public static void main(String[] args) {
// Debug resource bundle
ResourceBundleUtil.setVerbose(true);
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/main/resources/org/jhotdraw/samples/svg/Labels.properties b/jhotdraw-samples/jhotdraw-samples-misc/src/main/resources/org/jhotdraw/samples/svg/Labels.properties
index 191a94841..f0d7fc334 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/main/resources/org/jhotdraw/samples/svg/Labels.properties
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/main/resources/org/jhotdraw/samples/svg/Labels.properties
@@ -1,494 +1,313 @@
# Sample ResourceBundle properties file
-
-closePath=Close Path
-
-openPath=Open Path
-
-selectionSplit=Split Path
-
-selectionCombine=Combine Paths
-
-windingEvenOdd=Fill Even Odd
-
-windingNonZero=Fill Non Zero
-
-edit.removeTransform.text=Remove Transformation
-
-saveDrawing=Save
-
-edit.bringToFront.toolTipText=Bring to Front
-
-edit.bringToFront.largeIcon=${imageDir}/moveToFront.png
-
-edit.bringToFront.text=Bring to Front
-
-edit.sendToBack.text=Send to Back
-
-edit.sendToBack.toolTipText=Send to Back
-
-edit.sendToBack.largeIcon=${imageDir}/moveToBack.png
-
-cancel=Cancel
-
-progressInitializing=Initializing Applet\u2026
-
-progressLoading=Loading Drawing\u2026
-
-progressSaving=Saving Drawing\u2026
-
-progressOpeningEditor=Opening Editor\u2026
-
-messageSaveFailed=Couldn''t save the drawing.
Upload address: {0}
Error message: {1}.
-
-attributes.toolbar=Attributes
+actions.largeIcon=${imageDir}/actions.png
+actions.toolbar=Actions
+actions.toolTipText=Actions
+actions=Actions
+align.toolbar=Align
+align=Align
+alignEast.largeIcon=${imageDir}/alignEast.png
+alignEast.toolTipText=Align Right
+alignGrid.largeIcon=${imageDir}/alignGrid.png
+alignGrid.toolTipText=Align to Grid
+alignGrid=Align to grid
+alignGridSmall.largeIcon=${imageDir}/alignGridSmall.png
+alignGridSmall.toolTipText=Align to Grid
+alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
+alignHorizontal.toolTipText=Align Horizontal
alignment.toolbar=Align
-
-messageLoadFailed=Couldn''t load the drawing.
Download address: {0}
Error message: {1}.
-
-tools.toolbar=Tools
-
+alignmentToolBarTitle=Align
+alignNorth.largeIcon=${imageDir}/alignNorth.png
+alignNorth.toolTipText=Align Top
+alignSouth.largeIcon=${imageDir}/alignSouth.png
+alignSouth.toolTipText=Align Bottom
+alignVertical.largeIcon=${imageDir}/alignVertical.png
+alignVertical.toolTipText=Align Vertical
+alignWest.largeIcon=${imageDir}/alignWest.png
+alignWest.toolTipText=Align Left
+arrange.toolbar=Arrange
+attribute.canvasFillColor.largeIcon=${imageDir}/attributeFillColor.png
+attribute.canvasFillColor.text=Canvas Color
+attribute.canvasFillColor.toolTipText=Canvas Color
+attribute.canvasFillOpacity.icon=${imageDir}/attributeOpacity.png
+attribute.canvasFillOpacity.largeIcon=${imageDir}/attributeOpacity.png
+attribute.canvasFillOpacity.smallIcon=${imageDir}/attributeOpacity.png
+attribute.canvasFillOpacity.toolTipText=Canvas Opacity
+attribute.canvasHeight.text=H:
+attribute.canvasHeight.toolTipText=Canvas Height
+attribute.canvasWidth.text=W:
+attribute.canvasWidth.toolTipText=Canvas Width
+attribute.closePath.text=Close Path
+attribute.color.colorChooser.toolTipText=Open Color Chooser
+attribute.color.noColor.toolTipText=No Color
attribute.figureLink.text=Link\:
-
-summary=Summary\:
-
attribute.figureLink.toolTipText=Link to a Website
-
-summary.toolbar=Summary
-
-toolbars=Toolbars
-
-imageDir=/org/jhotdraw/samples/svg/action/images
-
-view=View
-
-view.mnem=V
-
-windowNew=New Window
-
-windowNew.largeIcon=${imageDir}/
-
-windowNew.mnem=
-
-windowClose=Close
-
-windowClose.mnem=c
-
-windowClose.largeIcon=${imageDir}/
-
-windowNew.acc=
-
-windowClose.acc=
-viewStandardToolBar=Standard
-
-viewDrawToolBar=Draw
-
-viewAttributesToolBar=Attributes
-
-viewAlignmentToolBar=Align
-
-viewStandardToolBar=Standard
-
-view.zoomFactor.toolTipText=Zoom
-
-attribute.strokeColor.toolTipText=Line Color
-
-attribute.strokeColor.largeIcon=${imageDir}/attributeStrokeColor.png
-
-attribute.fillColor.toolTipText=Fill Color
-
+attribute.figureLinkTarget.text=Target:
+attribute.figureLinkTarget.toolTipText=Link Target
+attribute.figureOpacity.icon=${imageDir}/attributeOpacity.png
+attribute.figureOpacity.largeIcon=${imageDir}/attributeOpacity.png
+attribute.figureOpacity.smallIcon=${imageDir}/attributeOpacity.png
+attribute.figureOpacity.toolTipText=Figure Opacity
attribute.fillColor.largeIcon=${imageDir}/attributeFillColor.png
-
-attribute.textColor.toolTipText=Text Color
-
-attribute.textColor.largeIcon=${imageDir}/attributeTextColor.png
-
-attribute.strokeWidth.toolTipText=Stroke Width
-
-attribute.strokeWidth.largeIcon=${imageDir}/attributeStrokeWidth.png
-
-attribute.strokeDecoration.toolTipText=Arrow Tips
-
-attribute.strokeDecoration.largeIcon=${imageDir}/attributeStrokeDecoration.png
-
-attribute.strokeDashes.toolTipText=Line Dashes
-
-attribute.strokeDashes.largeIcon=${imageDir}/attributeStrokeDashes.png
-
-moveToFront.toolTipText=Bring to Front
-
-moveToFront.largeIcon=${imageDir}/moveToFront.png
-
-moveToBack.toolTipText=Send to Back
-
-moveToBack.largeIcon=${imageDir}/moveToBack.png
-
-selectionTool.toolTipText=Selection Tool
Click multiple times to toggle handles.
-
-selectionTool.largeIcon=${imageDir}/selectionTool.png
-
-attribute.font.toolTipText=Font
-
+attribute.fillColor.toolTipText=Fill Color
+attribute.fillOpacity.largeIcon=${imageDir}/attributeOpacity.png
+attribute.fillOpacity.text=Fill Opacity
+attribute.fillOpacity.toolTipText=Fill Opacity
attribute.font.largeIcon=${imageDir}/attributeFont.png
-
-attribute.fontStyle.bold.toolTipText=Bold
-
+attribute.font.toolTipText=Font
+attribute.fontSize.largeIcon=${imageDir}/attributeFontSize.png
+attribute.fontSize.toolTipText=Font Size
attribute.fontStyle.bold.largeIcon=${imageDir}/attributeFontBold.png
-
-attribute.fontStyle.underline.toolTipText=Underlined
-
-attribute.fontStyle.underline.largeIcon=${imageDir}/attributeFontUnderline.png
-
-attribute.fontStyle.italic.toolTipText=Italic
-
+attribute.fontStyle.bold.text=Bold
+attribute.fontStyle.bold.toolTipText=Bold
attribute.fontStyle.italic.largeIcon=${imageDir}/attributeFontItalic.png
-
-alignGrid.toolTipText=Align to Grid
-
-alignGrid.largeIcon=${imageDir}/alignGrid.png
-
-align=Align
-
-alignNorth.toolTipText=Align Top
-
-alignNorth.largeIcon=${imageDir}/alignNorth.png
-
-alignSouth.toolTipText=Align Bottom
-
-alignSouth.largeIcon=${imageDir}/alignSouth.png
-
-alignEast.toolTipText=Align Right
-
-alignEast.largeIcon=${imageDir}/alignEast.png
-
-alignWest.toolTipText=Align Left
-
-alignWest.largeIcon=${imageDir}/alignWest.png
-
-alignVertical.toolTipText=Align Vertical
-
-alignVertical.largeIcon=${imageDir}/alignVertical.png
-
-alignHorizontal.toolTipText=Align Horizontal
-
-alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
-
-moveEast.toolTipText=Move Right
-
-moveEast.largeIcon=${imageDir}/moveEast.png
-
-moveWest.largeIcon=${imageDir}/moveWest.png
-
-moveWest.toolTipText=Move Left
-
-moveSouth.largeIcon=${imageDir}/moveSouth.png
-
-moveNorth.toolTipText=Move Up
-
-moveNorth.largeIcon=${imageDir}/moveNorth.png
-
-moveSouth.toolTipText=Move Down
-
-attributesPick.toolTipText=Pick attributes
-
-attributesPick.largeIcon=${imageDir}/attributesPick.png
-
-moveToFront=Bring to Front
-
-moveToBack=Send to Back
-
-createTextArea.toolTipText=Text Area
-
-createTextArea.largeIcon=${imageDir}/createTextArea.png
-
-createRectangle.toolTipText=Rectangle
-
-createRectangle.largeIcon=${imageDir}/createRectangle.png
-
-createEllipse.toolTipText=Ellipse
-
-createEllipse.largeIcon=${imageDir}/createEllipse.png
-
-createRoundRectangle.toolTipText=Rounded Rectangle
-
-createRoundRectangle.largeIcon=${imageDir}/createRoundRectangle.png
-
-createLine.toolTipText=Line
-
-createLine.largeIcon=${imageDir}/createLine.png
-
-createLineConnection=Connection
-
-createLineConnection.largeIcon=${imageDir}/createLineConnection.png
-
-createElbowConnection.toolTipText=Elbow Connection
-
-createScribble.toolTipText=Scribble
-
-createScribble.largeIcon=${imageDir}/createScribble.png
-
-createText.toolTipText=Text
-
-createText.largeIcon=${imageDir}/createText.png
-
-createPolygon.toolTipText=Polygon
-
-createPolygon.largeIcon=${imageDir}/createPolygon.png
-
-createArrow.toolTipText=Arrow
-
-createArrow.largeIcon=${imageDir}/createArrow.png
-
-createElbowConnection.largeIcon=${imageDir}/createElbowConnection.png
-
-attribute.strokeTypeBasic=Basic Stroke
-
-attribute.strokeTypeDouble=Double Stroke
-
-attribute.strokeType.largeIcon=${imageDir}/attributeStrokeType.png
-
-attribute.strokePlacementCenter=Center
-
-attribute.strokePlacementInside=Inside
-
-attribute.strokePlacementOutside=Outside
-
-attributesApply.toolTipText=Apply attributes
-
-attributesApply.largeIcon=${imageDir}/attributesApply.png
-
-attribute.strokePlacement.largeIcon=${imageDir}/attributeStrokePlacement.png
-
-attribute.strokePlacement.toolTipText=Stroke Placement
-
-attribute.strokePlacementInsideFilled=Inside Filled
-
-attribute.strokePlacementOutsideFilled=Outside Filled
-
-attribute.strokePlacementCenterFilled=Center Filled
-
-selectionGroup=Group
-
-selectionGroup.largeIcon=${imageDir}/selectionGroup.png
-
-selectionUngroup=Ungroup
-
-selectionUngroup.largeIcon=${imageDir}/selectionUngroup.png
-
-editSelectSame=Select Same
-
-createDiamond.largeIcon=${imageDir}/createDiamond.png
-
-createDiamond.toolTipText=Diamond
-
-createTriangle.toolTipText=Triangle
-
-createTriangle.largeIcon=${imageDir}/createTriangle.png
-
-attribute.strokePlacementInsideUnfilled=Inside unfilled
-
-attribute.strokePlacementOutsideUnfilled=Outside Unfilled
-
-attribute.strokePlacementCenterUnfilled=Center Unfilled
-
-alignGridSmall.largeIcon=${imageDir}/alignGridSmall.png
-
-alignGridSmall.toolTipText=Align to Grid
-
-drawToolBarTitle=Draw
-
-alignmentToolBarTitle=Align
-
-attributesToolBarTitle=Attributes
-
-transformFigure=Transform
-
-alignGrid=Align to grid
-
-zoom=Zoom
-
-actions.largeIcon=${imageDir}/actions.png
-
-actions.toolTipText=Actions
-
-actions=Actions
-
-windingRule=Winding Rule
-
-windingRuleEvenOdd=Even Odd
-
-windingRuleNonZero=Non Zero
-
-createImage.largeIcon=${imageDir}/createImage.png
-
-createImage.toolTipText=Image
-
-failedToLoadImage=Couldn''t load image from file "{0}".
-
-attribute.strokeCap.largeIcon=${imageDir}/attributeStrokeCap.png
-
-attribute.strokeCap.toolTipText=Line Caps
-
+attribute.fontStyle.italic.text=Italic
+attribute.fontStyle.italic.toolTipText=Italic
+attribute.fontStyle.underline.largeIcon=${imageDir}/attributeFontUnderline.png
+attribute.fontStyle.underline.text=Underline
+attribute.fontStyle.underline.toolTipText=Underlined
+attribute.opacity.largeIcon=${imageDir}/attributeOpacity.png
+attribute.opacity.text=Opacity
+attribute.opacity.toolTipText=Opacity
+attribute.openPath.text=Open Path
attribute.strokeCap.butt=Butt
-
+attribute.strokeCap.largeIcon=${imageDir}/attributeStrokeCap.png
attribute.strokeCap.round=Round
-
attribute.strokeCap.square=Square
-
-attribute.strokeJoin.largeIcon=${imageDir}/attributeStrokeJoin.png
-
-attribute.strokeJoin.miter=Miter
-
-attribute.strokeJoin.round=Round
-
+attribute.strokeCap.toolTipText=Line Caps
+attribute.strokeColor.largeIcon=${imageDir}/attributeStrokeColor.png
+attribute.strokeColor.toolTipText=Line Color
+attribute.strokeDashes.largeIcon=${imageDir}/attributeStrokeDashes.png
+attribute.strokeDashes.toolTipText=Line Dashes
+attribute.strokeDashPhase.text=Dash Offset
+attribute.strokeDashPhase.toolTipText=Dash Offset
+attribute.strokeDecoration.largeIcon=${imageDir}/attributeStrokeDecoration.png
+attribute.strokeDecoration.toolTipText=Arrow Tips
attribute.strokeJoin.bevel=Bevel
-
-bezierCubicControlHandle.toolTipText={0}.
Command-click changes control point type.
-
-bezierNode.linearNode=Edge Point
-
-bezierNode.quadraticNode=Quadratic Curve Point
-
-bezierNode.cubicNode=Cubic Curve Point
-
-bezierNodeHandle.toolTipText={0}
Command-click changes point type.
-
-bezierCubicControl.unconstrainedControl=Unconstrained Control Point
-
-bezierCubicControl.colinearControl=Colinear Control Point
-
-bezierQuadraticControlHandle.toolTipText=Control Point
-
-fontSizeHandle.toolTipText=Font Size
-
-roundRectangleRadiusHandle.toolTipText=Round-Rectangle Radius
-
-rotateHandle.toolTipText=Rotate
-
-resizeHandle.toolTipText=Resize
-
-transformHandle.toolTipText=Scale
-
-multipleValues=Multiple Values
-
-
-attribute.opacity.toolTipText=Opacity
-
-attribute.opacity.largeIcon=${imageDir}/attributeOpacity.png
-
-edit.undo.text=Undo
-
-edit.redo.text=Redo
-
-edit.redo.largeIcon=${imageDir}/editRedo.png
-
-edit.undo.largeIcon=${imageDir}/editUndo.png
-
-view.zoomFactor.text=Zoom
-
-view.zoomFactor.largeIcon=
-edit.flattenTransform.text=Flatten Transformation
-
+attribute.strokeJoin.largeIcon=${imageDir}/attributeStrokeJoin.png
+attribute.strokeJoin.miter=Miter
+attribute.strokeJoin.round=Round
attribute.strokeJoin.toolTipText=Joints
-progressProcessingDrawing=Processing Drawing\u2026
-actions.toolbar=Actions
-fill.toolbar=Fill
-stroke.toolbar=Stroke
-font.toolbar=Font
-align.toolbar=Align
-figure.toolbar=Figure
-arrange.toolbar=Arrange
-canvas.toolbar=Canvas
-attribute.fillOpacity.largeIcon=${imageDir}/attributeOpacity.png
-attribute.fillOpacity.toolTipText=Fill Opacity
+attribute.strokeOpacity.icon=${imageDir}/attributeOpacity.png
attribute.strokeOpacity.largeIcon=${imageDir}/attributeOpacity.png
+attribute.strokeOpacity.smallIcon=${imageDir}/attributeOpacity.png
+attribute.strokeOpacity.text=Stroke Opacity
attribute.strokeOpacity.toolTipText=Stroke Opacity
-attribute.canvasFillColor.toolTipText=Canvas Color
-attribute.canvasFillOpacity.toolTipText=Canvas Opacity
-attribute.canvasFillOpacity.largeIcon=${imageDir}/attributeOpacity.png
-attribute.canvasFillColor.largeIcon=${imageDir}/attributeFillColor.png
-attribute.figureOpacity.toolTipText=Figure Opacity
-attribute.figureOpacity.largeIcon=${imageDir}/attributeOpacity.png
-attribute.canvasFillColor.text=Canvas Color
-attribute.color.noColor.toolTipText=No Color
-edit.redo.toolTipText=Redo
-edit.undo.toolTipText=Undo
-view.viewSource.text=View Source
-attribute.canvasWidth.text=W:
-attribute.canvasWidth.toolTipText=Canvas Width
-attribute.canvasHeight.text=H:
-attribute.canvasHeight.toolTipText=Canvas Height
-view.viewSource.toolTipText=
-view.viewSource.accelerator=
-view.viewSource.mnemonic=
-view.viewSource.largeIcon=
-edit.combinePaths.text=Combine Paths
-edit.combinePaths.toolTipText=Combine Paths
-edit.combinePaths.accelerator=
-edit.combinePaths.mnemonic=
-edit.combinePaths.largeIcon=
-edit.splitPath.text=Split Path
-edit.splitPath.toolTipText=Split Path
-edit.splitPath.accelerator=
-edit.splitPath.mnemonic=
-edit.splitPath.largeIcon=
+attribute.strokePlacement.largeIcon=${imageDir}/attributeStrokePlacement.png
+attribute.strokePlacement.toolTipText=Stroke Placement
+attribute.strokePlacementCenter=Center
+attribute.strokePlacementCenterFilled=Center Filled
+attribute.strokePlacementCenterUnfilled=Center Unfilled
+attribute.strokePlacementInside=Inside
+attribute.strokePlacementInsideFilled=Inside Filled
+attribute.strokePlacementInsideUnfilled=Inside unfilled
+attribute.strokePlacementOutside=Outside
+attribute.strokePlacementOutsideFilled=Outside Filled
+attribute.strokePlacementOutsideUnfilled=Outside Unfilled
+attribute.strokeType.largeIcon=${imageDir}/attributeStrokeType.png
+attribute.strokeTypeBasic=Basic Stroke
+attribute.strokeTypeDouble=Double Stroke
+attribute.strokeWidth.largeIcon=${imageDir}/attributeStrokeWidth.png
+attribute.strokeWidth.toolTipText=Stroke Width
+attribute.textColor.largeIcon=${imageDir}/attributeTextColor.png
+attribute.textColor.toolTipText=Text Color
+attribute.windingRule.evenOdd.text=Even Odd
+attribute.windingRule.nonZero.text=Non Zero
+attributes.toolbar=Attributes
+attributesApply.largeIcon=${imageDir}/attributesApply.png
+attributesApply.toolTipText=Apply attributes
+attributesPick.largeIcon=${imageDir}/attributesPick.png
+attributesPick.toolTipText=Pick attributes
+attributesToolBarTitle=Attributes
+bezierCubicControl.colinearControl=Colinear Control Point
+bezierCubicControl.unconstrainedControl=Unconstrained Control Point
+bezierCubicControlHandle.toolTipText={0}.
Command-click changes control point type.
+bezierNode.cubicNode=Cubic Curve Point
+bezierNode.linearNode=Edge Point
+bezierNode.quadraticNode=Quadratic Curve Point
+bezierNodeHandle.toolTipText={0}
Command-click changes point type.
+bezierQuadraticControlHandle.toolTipText=Control Point
+cancel=Cancel
+canvas.toolbar=Canvas
+closePath=Close Path
+createArrow.largeIcon=${imageDir}/createArrow.png
+createArrow.toolTipText=Arrow
+createDiamond.largeIcon=${imageDir}/createDiamond.png
+createDiamond.toolTipText=Diamond
+createElbowConnection.largeIcon=${imageDir}/createElbowConnection.png
+createElbowConnection.toolTipText=Elbow Connection
+createEllipse.largeIcon=${imageDir}/createEllipse.png
+createEllipse.toolTipText=Ellipse
+createImage.largeIcon=${imageDir}/createImage.png
+createImage.toolTipText=Image
+createLine.largeIcon=${imageDir}/createLine.png
+createLine.toolTipText=Line
+createLineConnection.largeIcon=${imageDir}/createLineConnection.png
+createLineConnection=Connection
+createPolygon.largeIcon=${imageDir}/createPolygon.png
+createPolygon.toolTipText=Polygon
+createRectangle.largeIcon=${imageDir}/createRectangle.png
+createRectangle.toolTipText=Rectangle
+createRoundRectangle.largeIcon=${imageDir}/createRoundRectangle.png
+createRoundRectangle.toolTipText=Rounded Rectangle
+createScribble.largeIcon=${imageDir}/createScribble.png
+createScribble.toolTipText=Scribble
+createText.largeIcon=${imageDir}/createText.png
+createText.toolTipText=Text
+createTextArea.largeIcon=${imageDir}/createTextArea.png
+createTextArea.toolTipText=Text Area
+createTriangle.largeIcon=${imageDir}/createTriangle.png
+createTriangle.toolTipText=Triangle
+drawToolBarTitle=Draw
+edit.adjustHeightToImageAspect.text=Adjust height to image aspect
+edit.adjustWidthToImageAspect.text=Adjust width to image aspect
edit.align.text=Align
edit.alignEast.accelerator=
+edit.alignEast.largeIcon=${imageDir}/alignEast.png
edit.alignEast.mnemonic=
edit.alignEast.text=
-edit.alignEast.largeIcon=${imageDir}/alignEast.png
edit.alignEast.toolTipText=Align Right
edit.alignHorizontal.accelerator=
+edit.alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
edit.alignHorizontal.mnemonic=
edit.alignHorizontal.text=
-edit.alignHorizontal.largeIcon=${imageDir}/alignHorizontal.png
edit.alignHorizontal.toolTipText=Align Horizontal
-window.alignmentToolBar.title=Align
edit.alignNorth.accelerator=
+edit.alignNorth.largeIcon=${imageDir}/alignNorth.png
edit.alignNorth.mnemonic=
edit.alignNorth.text=
-edit.alignNorth.largeIcon=${imageDir}/alignNorth.png
edit.alignNorth.toolTipText=Align Top
edit.alignSouth.accelerator=
+edit.alignSouth.largeIcon=${imageDir}/alignSouth.png
edit.alignSouth.mnemonic=
edit.alignSouth.text=
-edit.alignSouth.largeIcon=${imageDir}/alignSouth.png
edit.alignSouth.toolTipText=Align Bottom
edit.alignVertical.accelerator=
+edit.alignVertical.largeIcon=${imageDir}/alignVertical.png
edit.alignVertical.mnemonic=
edit.alignVertical.text=
-edit.alignVertical.largeIcon=${imageDir}/alignVertical.png
edit.alignVertical.toolTipText=Align Vertical
edit.alignWest.accelerator=
+edit.alignWest.largeIcon=${imageDir}/alignWest.png
edit.alignWest.mnemonic=
edit.alignWest.text=
-edit.alignWest.largeIcon=${imageDir}/alignWest.png
edit.alignWest.toolTipText=Align Left
-
-attribute.fontStyle.bold.text=Bold
-attribute.fontStyle.italic.text=Italic
-attribute.fontStyle.underline.text=Underline
-attribute.openPath.text=Open Path
-attribute.windingRule.evenOdd.text=Even Odd
-attribute.windingRule.nonZero.text=Non Zero
-attribute.fontSize.largeIcon=${imageDir}/attributeFontSize.png
-attribute.fontSize.toolTipText=Font Size
-attribute.color.colorChooser.toolTipText=Open Color Chooser
+edit.bringToFront.largeIcon=${imageDir}/moveToFront.png
+edit.bringToFront.text=Bring to Front
+edit.bringToFront.toolTipText=Bring to Front
+edit.combinePaths.accelerator=
+edit.combinePaths.icon=
+edit.combinePaths.largeIcon=
+edit.combinePaths.mnemonic=
+edit.combinePaths.smallIcon=
+edit.combinePaths.text=Combine Paths
+edit.combinePaths.toolTipText=Combine Paths
+edit.flattenTransform.text=Flatten Transformation
+edit.redo.largeIcon=${imageDir}/editRedo.png
+edit.redo.text=Redo
+edit.redo.toolTipText=Redo
+edit.removeTransform.text=Remove Transformation
+edit.sendToBack.largeIcon=${imageDir}/moveToBack.png
+edit.sendToBack.text=Send to Back
+edit.sendToBack.toolTipText=Send to Back
+edit.setToImageSize.text=Set to image size
+edit.splitPath.accelerator=
+edit.splitPath.icon=
+edit.splitPath.largeIcon=
+edit.splitPath.mnemonic=
+edit.splitPath.smallIcon=
+edit.splitPath.text=Split Path
+edit.splitPath.toolTipText=Split Path
+edit.undo.largeIcon=${imageDir}/editUndo.png
+edit.undo.text=Undo
+edit.undo.toolTipText=Undo
+editSelectSame=Select Same
+failedToLoadImage=Couldn''t load image from file "{0}".
+figure.toolbar=Figure
+fill.toolbar=Fill
+font.toolbar=Font
+fontSizeHandle.toolTipText=Font Size
link.toolbar=Link
-attribute.figureLinkTarget.text=Target:
-attribute.figureLinkTarget.toolTipText=Link Target
-attribute.closePath.text=Close Path
-attribute.strokeDashPhase.toolTipText=Dash Offset
-view.toolTipText=View
-view.gridSize.toolTipText=Grid Size
-view.toolbar=View
+messageLoadFailed=Couldn''t load the drawing.
Download address: {0}
Error message: {1}.
messagePanel.close.text=Close
-progressProcessing=Processing Drawing\u2026
-attribute.fillOpacity.text=Fill Opacity
-attribute.strokeOpacity.text=Stroke Opacity
-attribute.strokeDashPhase.text=Dash Offset
-attribute.opacity.text=Opacity
-edit.setToImageSize.text=Set to image size
-edit.adjustHeightToImageAspect.text=Adjust height to image aspect
-edit.adjustWidthToImageAspect.text=Adjust width to image aspect
+messageSaveFailed=Couldn''t save the drawing.
Upload address: {0}
Error message: {1}.
+moveEast.largeIcon=${imageDir}/moveEast.png
+moveEast.toolTipText=Move Right
+moveNorth.largeIcon=${imageDir}/moveNorth.png
+moveNorth.toolTipText=Move Up
+moveSouth.largeIcon=${imageDir}/moveSouth.png
+moveSouth.toolTipText=Move Down
+moveToBack.largeIcon=${imageDir}/moveToBack.png
+moveToBack.toolTipText=Send to Back
+moveToBack=Send to Back
+moveToFront.largeIcon=${imageDir}/moveToFront.png
+moveToFront.toolTipText=Bring to Front
+moveToFront=Bring to Front
+moveWest.largeIcon=${imageDir}/moveWest.png
+moveWest.toolTipText=Move Left
+multipleValues=Multiple Values
+openPath=Open Path
+progressInitializing=Initializing Applet\u2026
+progressLoading=Loading Drawing\u2026
progressLoadingFile=Loading {0}...
+progressOpeningEditor=Opening Editor\u2026
+progressProcessing=Processing Drawing\u2026
+progressProcessingDrawing=Processing Drawing\u2026
+progressSaving=Saving Drawing\u2026
+resizeHandle.toolTipText=Resize
+rotateHandle.toolTipText=Rotate
+roundRectangleRadiusHandle.toolTipText=Round-Rectangle Radius
+saveDrawing=Save
+selectionCombine=Combine Paths
+selectionGroup.largeIcon=${imageDir}/selectionGroup.png
+selectionGroup=Group
+selectionSplit=Split Path
+selectionTool.largeIcon=${imageDir}/selectionTool.png
+selectionTool.toolTipText=Selection Tool
Click multiple times to toggle handles.
+selectionUngroup.largeIcon=${imageDir}/selectionUngroup.png
+selectionUngroup=Ungroup
+stroke.toolbar=Stroke
+summary.toolbar=Summary
+summary=Summary\:
+toolbars=Toolbars
+tools.toolbar=Tools
+transformFigure=Transform
+transformHandle.toolTipText=Scale
+view.gridSize.toolTipText=Grid Size
+view.mnem=V
+view.toolbar=View
+view.toolTipText=View
+view.viewSource.accelerator=
+view.viewSource.icon=
+view.viewSource.largeIcon=
+view.viewSource.mnemonic=
+view.viewSource.smallIcon=
+view.viewSource.text=View Source
view.viewSource.titleText={0} as Source
+view.viewSource.toolTipText=
+view.zoomFactor.icon=
+view.zoomFactor.largeIcon=
+view.zoomFactor.smallIcon=
+view.zoomFactor.text=Zoom
+view.zoomFactor.toolTipText=Zoom
+view=View
+viewAlignmentToolBar=Align
+viewAttributesToolBar=Attributes
+viewDrawToolBar=Draw
+viewStandardToolBar=Standard
+windingEvenOdd=Fill Even Odd
+windingNonZero=Fill Non Zero
+windingRule=Winding Rule
+windingRuleEvenOdd=Even Odd
+windingRuleNonZero=Non Zero
+window.alignmentToolBar.title=Align
+windowClose.acc=
+windowClose.largeIcon=${imageDir}/
+windowClose.mnem=c
+windowClose=Close
+windowNew.acc=
+windowNew.largeIcon=${imageDir}/
+windowNew.mnem=
+windowNew=New Window
+zoom=Zoom
+
+imageDir=/org/jhotdraw/samples/svg/action/images
\ No newline at end of file
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/MainTest.java b/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/MainTest.java
index 82e12d030..dd8bdacd2 100644
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/MainTest.java
+++ b/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/MainTest.java
@@ -19,10 +19,10 @@
package org.jhotdraw.samples.svg;
-import org.junit.Ignore;
+// import org.junit.Ignore;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
+// import static org.junit.Assert.assertEquals;
/**
*
@@ -34,20 +34,20 @@ public class MainTest {
* Test of main method, of class Main.
*/
@Test
- @Ignore
+ // @Ignore
public void testMain() {
System.out.println("main");
String[] args = {};
Main.main(args);
while (true){
-
+
}
}
- @Test
- public void test() {
- assertEquals(true, true);
- }
+ // @Test
+ // public void test() {
+ // assertEquals(true, true);
+ // }
}
diff --git a/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/figures/SVGTextAreaFigureTest.java b/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/figures/SVGTextAreaFigureTest.java
deleted file mode 100644
index a81fe743d..000000000
--- a/jhotdraw-samples/jhotdraw-samples-misc/src/test/java/org/jhotdraw/samples/svg/figures/SVGTextAreaFigureTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.jhotdraw.samples.svg.figures;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.awt.*;
-import java.awt.geom.Point2D;
-import java.awt.geom.Rectangle2D;
-
-import static org.junit.Assert.assertEquals;
-
-public class SVGTextAreaFigureTest {
-
- private SVGTextAreaFigure figure;
-
- @Before
- public void setUp() {
- this.figure = new SVGTextAreaFigure("Test text");
- }
-
-
- @Test
- public void testGetText() {
- assertEquals("Test text", figure.getText());
- }
-
- @Test
- public void testSetFont() {
- figure.setFontSize(20);
- assertEquals(20, figure.getFontSize(), 0.1);
- }
-
- @Test
- public void testDefaultFont() {
- Font font = figure.getFont();
- assertEquals("VERDANA", font.getName());
- }
-
- @Test
- public void testSetBounds() {
- Point2D.Double anchor = new Point2D.Double(10,10);
- Point2D.Double lead = new Point2D.Double(100, 100);
- figure.setBounds(anchor, lead);
- Rectangle2D bounds = figure.getBounds();
- assertEquals(10, bounds.getX(), 0.1);
- assertEquals(10, bounds.getY(), 0.1);
- assertEquals(90, bounds.getHeight(), 0.1);
- assertEquals(90, bounds.getWidth(), 0.1);
- }
-}
diff --git a/jhotdraw-samples/jhotdraw-samples.iml b/jhotdraw-samples/jhotdraw-samples.iml
index 9ae59adaf..1cec52a5f 100644
--- a/jhotdraw-samples/jhotdraw-samples.iml
+++ b/jhotdraw-samples/jhotdraw-samples.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-utils/jhotdraw-utils.iml b/jhotdraw-utils/jhotdraw-utils.iml
index 7a2bb0d49..859fec4b5 100644
--- a/jhotdraw-utils/jhotdraw-utils.iml
+++ b/jhotdraw-utils/jhotdraw-utils.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw-xml/jhotdraw-xml.iml b/jhotdraw-xml/jhotdraw-xml.iml
index 3fba610ba..04727746d 100644
--- a/jhotdraw-xml/jhotdraw-xml.iml
+++ b/jhotdraw-xml/jhotdraw-xml.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/jhotdraw.iml b/jhotdraw.iml
index e76436a64..14013298f 100644
--- a/jhotdraw.iml
+++ b/jhotdraw.iml
@@ -1,6 +1,10 @@
+<<<<<<< Updated upstream
+=======
+
+>>>>>>> Stashed changes
\ No newline at end of file
diff --git a/my-drawings/amogus.png b/my-drawings/amogus.png
new file mode 100644
index 000000000..d0a3a3d10
--- /dev/null
+++ b/my-drawings/amogus.png
@@ -0,0 +1 @@
+
diff --git a/my-drawings/amogus.svg b/my-drawings/amogus.svg
new file mode 100644
index 000000000..d0a3a3d10
--- /dev/null
+++ b/my-drawings/amogus.svg
@@ -0,0 +1 @@
+