|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjfig.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 cancel and cleanup the current command. |
void |
execute()
execute the current editor command This method is empty for class Command. |
java.lang.String |
getDescription()
one-line description of this command return a one-line desription of this command, e.g. to label the undo/redo buttons, if any |
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 This method provides the central callback from the editor to its current command object. |
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 Try to undo this command as far as possible. |
| 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 Commandpublic void cancel()
Commandcancel and cleanup the current command. Note that this method is empty for class Command, but might be implemented by subclasses.
cancel in class Commandpublic void showSelectDialog()
public void setSelectionListener()
public void hideSelectDialog()
public void execute()
CommandThis method is empty for class Command.
execute in class Commandpublic void mousePressed(FigCanvasEvent evt)
CommandThis 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 Commandpublic 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()
CommandTry 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 Commandpublic java.lang.String getDescription()
Commandreturn a one-line desription of this command, e.g. to label the undo/redo buttons, if any
getDescription in class Commandpublic 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 | |||||||||