|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object jfig.commands.Command jfig.commands.SelectLibraryObjectCommand
browse FIG libraries and add selected objects to the current drawing
A SelectLibraryObjectCommand displays the SelectFromLibraryDialog window, to allow the user to browse and select FIG library objects. Once an object is selected, the outline of the object is presented as the canvas rubberband, and the user has the choice to (left): add the selected object to the drawing, (middle): select another library object, (right): cancel the command.
Note: to avoid further complication of jfig.gui.ModularEditor and to avoid too strong coupling between this class and ModularEditor instead of FigBasicEditor, this class uses a static reference to SelectFromLibraryDialog. This means that ModularEditor needs no knowledge about how the user selects FIG library objects. On the other hand, it is not possible to use different select dialogs at the same time.
To implement the xfig behavior, we also use a static boolean flag 'hasPreselectedObject' to indicate that the next new command object should not display the SelectFromLibraryDialog but use a copy of the last selected object instead (xfig left mouse button behaviour).
A final hack: as several important FIG attribute values are currently static (=global) in FigAttribs, we save and rescue the original parent drawings values before parsing the library object, and restore them after parsing. This situation should REALLY be corrected sometime.
Field Summary | |
(package private) FigCompound |
buffer
|
(package private) java.awt.Point |
endPoint
|
(package private) static java.awt.Frame |
frame
|
(package private) static boolean |
hasPreselectedObject
|
(package private) static SelectLibraryObjectDialog |
selectDialog
|
(package private) java.awt.Point |
startPoint
|
Fields inherited from class jfig.commands.Command |
editor, objectCanvas, ready |
Constructor Summary | |
SelectLibraryObjectCommand(FigBasicEditor editor,
FigCanvas objectCanvas)
|
Method Summary | |
void |
cancel()
cancel the current editor command |
void |
execute()
execute the current editor command |
java.lang.String |
getDescription()
one-line description of this command |
FigObject[] |
getModifiedObjects()
return an array-wrapped reference to the library (compound) object (to be) created by this command. |
void |
hideSelectDialog()
|
void |
mousePressed(FigCanvasEvent evt)
react to a mouse click on the editor canvas |
void |
restoreGlobalAttributes()
|
void |
saveGlobalAttributes()
|
void |
selectObject()
the user has selected an object in the SelectFromLibraryDialog window. |
void |
setSelectionListener()
|
void |
showSelectDialog()
|
java.lang.String |
toString()
return a (possibly verbose) description of this Command object |
void |
undo()
undo this command |
Methods inherited from class jfig.commands.Command |
isReady, message, notifyEditor, statusMessage |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
static SelectLibraryObjectDialog selectDialog
static java.awt.Frame frame
static boolean hasPreselectedObject
FigCompound buffer
java.awt.Point startPoint
java.awt.Point endPoint
Constructor Detail |
public SelectLibraryObjectCommand(FigBasicEditor editor, FigCanvas objectCanvas)
Method Detail |
public FigObject[] getModifiedObjects()
getModifiedObjects
in class Command
public void cancel()
Command
cancel and cleanup the current command. Note that this method is empty for class Command, but might be implemented by subclasses.
cancel
in class Command
public void showSelectDialog()
public void setSelectionListener()
public void hideSelectDialog()
public void execute()
Command
This method is empty for class Command.
execute
in class Command
public void mousePressed(FigCanvasEvent evt)
Command
This method provides the central callback from the editor to its current command object. Passing a FigCanvasEvent parameter, the editor provides information both about the screen coordinates and the world coordinates of the mouse event.
Naturally, mouse presses are ignored for class Command.
mousePressed
in class Command
public void selectObject()
Due to one of jfig's design errors, it is currently difficult to display the same objects in two different canvases, with different magnification (transformations). Because the selected library object is already displayed in the preview canvas of the SelectFromLibraryDialog, we cannot directly re-use the objectList available...
Therefore, we re-parse the selected object, using the current FigTrafo2D transformation of the editor's main drawing canvas.
Also note that we re-parse the object each time it is selected. However, while parsing is a little bit more expensive than a deep object copy, this should not be a too great problem on current hardware...
public void saveGlobalAttributes()
public void restoreGlobalAttributes()
public void undo()
Command
Try to undo this command as far as possible. Don't try to undo() a command that has never been execute()d before. This method is empty for class Command.
undo
in class Command
public java.lang.String getDescription()
Command
return a one-line desription of this command, e.g. to label the undo/redo buttons, if any
getDescription
in class Command
public java.lang.String toString()
Command
toString
in class Command
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |