public class TLcdGXYEditControllerModel2 extends Object
TLcdGXYEditControllerModel2
contains the input-independent logic for
editing objects on an ILcdGXYView
.
It encapsulates what is edited, how it is edited, how the editing is
visualized and how edits are applied.
The most important concepts of this class are the following:
editWhatMode
editingCandidates
paintEditing
applyEdit
EDIT_HOW
for all possibilities.
This is typically input-dependent and should be determined by the controller.
The editWhatMode defines what should be edited: the objects themselves, or
their labels? Please refer to the constants that start with
EDIT_WHAT
for all possibilities.
The editingCandidates are those objects that are involved in the editing
process. The method takes into account the modes to define the involved
objects. If it is for example asked to return the editing candidates for a
EDIT_WHAT_LABELS
mode, it only returns objects that have labels
next to them.
While the edit process is ongoing (e.g., the user is performing a drag), the
objects are not edited all the time, they are just painted in their temporary
state. The method paintEditing takes care of this. This method is typically
invoked often (e.g., on mouse drag) while the edit process is ongoing.
Once the edit is complete, the method applyEdit performs the actual edit
operation to the editing candidates. It delegates the real work to the ILcdGXYEditor
s or the ILcdGXYLabelEditor
s of the editing
candidates, depending on the modes.
At all times - before an edit, during an edit or after an edit - the correct mouse
cursor is provided by the method mouseCursor
.
The edit operations, performed by applyEdit
, can be
undone, provided the ILcdGXYEditor
s and/or ILcdGXYLabelEditor
s to which the real work is delegated implement ILcdUndoableSource
as well, to indicate that they support undo. Please
refer to the developer guide for more information about undo.
The method snapTarget
returns the target to snap the
edited objects to. Please refer to the developer guide for an overview
of snapping.
This edit controller model supports body label editing, see TLcdLabelLocation.isBodyLabel()
.
When a body label is translated (EDIT_HOW_TRANSLATING
), its domain object is translated
instead. When a body label is reshaped (EDIT_HOW_RESHAPING
), it is translated instead.
This is done by calling the ILcdGXYLabelEditor
with the
ILcdGXYLabelEditor.TRANSLATED
mode instead of
ILcdGXYLabelEditor.RESHAPED
.
Subclasses can override these methods to alter their behavior. They can also
introduce new modes, but care should be taken to override all methods, so
that they all know how to handle this new mode (calling super
with an existing mode could be useful). Integer constants used for those new
modes should be greater than or equal to 1 << 25
.
Note: editing labels is only supported if:
ILcdGXYLabelPainter2
(not just ILcdGXYLabelPainter
)
ILcdGXYEditableLabelsLayer
ILcdGXYLabelEditor
is set to the layer.
TLcdGXYMultiPointEditControllerModel
Modifier and Type | Class and Description |
---|---|
static class |
TLcdGXYEditControllerModel2.SnapTargetInfo
Object representing all needed information about a snap target.
|
Modifier and Type | Field and Description |
---|---|
static int |
EDIT_HOW_NO_CHANGE
Mode defining that no changes should be made.
|
static int |
EDIT_HOW_RESHAPING
Mode defining that editing should reshape the editing candidates.
|
static int |
EDIT_HOW_TRANSLATING
Mode defining that editing should translate the editing candidates.
|
static int |
EDIT_WHAT_FIRST_TOUCHED_LABEL
Mode defining that editing (e.g., translating or reshaping) should act on
the first touched label only.
|
static int |
EDIT_WHAT_LABELS
Mode defining that editing (e.g., translating or reshaping) should act on
the labels.
|
static int |
EDIT_WHAT_NO_CHANGE
Mode defining that no changes should be made.
|
static int |
EDIT_WHAT_OBJECTS
Mode defining that editing (e.g., translating or reshaping) should act on
the objects (e.g., the points, polylines, ...).
|
Constructor and Description |
---|
TLcdGXYEditControllerModel2()
Default constructor
|
Modifier and Type | Method and Description |
---|---|
void |
addUndoableListener(ILcdUndoableListener aListener)
Adds a listener to this source, so this listener is notified when something undoable has
happened.
|
boolean |
applyEdit(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
List<Point> aFrom,
List<Point> aTo,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Applies the edit to every object of the given subset, by delegating the real work to
ILcdGXYEditor.edit with the mode TRANSLATED (or RESHAPED if aEditHow is
EDIT_HOW_RESHAPING ). |
boolean |
applyEdit(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Applies the edit to every object of the given subset, by delegating the
real work to
ILcdGXYEditor.edit with the mode TRANSLATED (or RESHAPED if aEditHow is
EDIT_HOW_RESHAPING ). |
protected TLcdCompositeUndoable |
createCompositeUndoable()
Deprecated.
Override
createTotalOperationUndoable(com.luciad.view.gxy.ILcdGXYView, java.awt.Point, java.awt.Point, java.awt.event.MouseEvent, int, int, com.luciad.view.gxy.ILcdGXYLayerSubsetList) .
That method provides more useful parameters. |
protected TLcdCompositeUndoable |
createSingleObjectUndoable(Object aDomainObject,
ILcdGXYLayer aLayer,
ILcdGXYView aGXYView,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Creates the composite undoable that will wrap all the undoables generated by a single
ILcdGXYEditor for a single domain object. |
protected TLcdCompositeUndoable |
createTotalOperationUndoable(ILcdGXYView aGXYView,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Creates the composite undoable that will wrap all undoables generated by all the underlying
editors for all the edited domain objects.
|
static String |
editHowAsString(int aEditHow)
Utility method that converts the given edit-how mode to a human readable
string.
|
int |
editHowMode(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent)
Deprecated.
The controllers themselves should be responsible for specifying the edit how mode,
mainly because it is very dependent on the kind of input device.
|
ILcdGXYLayerSubsetList |
editingCandidates(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat)
Returns the set of candidates for editing, respecting the given modes.
For
EDIT_HOW_TRANSLATING ,
the candidates are those objects that are selected, visible and editable
on the given ILcdGXYView . |
static String |
editWhatAsString(int aEditWhat)
Utility method that converts the given edit-what mode to a human readable
string.
|
int |
editWhatMode(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow)
Deprecated.
The controllers themselves should be responsible for any dependency on InputEvents
of the edit-what mode
|
protected void |
fireUndoableHappened(ILcdUndoable aUndoable)
Notify all undoable listeners that
aUndoable has happened. |
int |
getSensitivity()
This method returns the sensitivity that will be used when editing objects or labels.
|
boolean |
isTraceOn()
Deprecated.
This method has been deprecated. It is recommended to use the
standard Java logging framework directly.
|
Cursor |
mouseCursor(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Returns the desired cursor for the given parameters.
|
void |
paintEditing(Graphics aGraphics,
ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
ILcdGXYLayerSubsetList aEditingCandidates)
Paints the given set of edit candidates in their temporary editing state.
|
void |
removeUndoableListener(ILcdUndoableListener aListener)
Removes the specified listener so it is no longer notified.
|
static void |
setClassTraceOn(boolean aClassTraceOn)
Deprecated.
This method has been deprecated. It is recommended to use the
standard Java logging framework directly.
|
void |
setSensitivity(int aSensitivity)
This method sets the sensitivity that should be used by painters/editors to determine which
object (or part of the object) is edited by the input device (usually the mouse).
|
void |
setStringTranslator(ILcdStringTranslator aStringTranslator)
Sets the
ILcdStringTranslator that this controller model should use to
translate the Strings that will be visible in the user interface. |
void |
setTraceOn(boolean aTraceOn)
Deprecated.
This method has been deprecated. It is recommended to use the
standard Java logging framework directly.
|
TLcdGXYEditControllerModel2.SnapTargetInfo |
snapTarget(ILcdGXYView aGXYView,
ILcdGXYLayerSubsetList aSnappables,
Point aFrom,
Point aTo,
MouseEvent aMouseEvent,
int aEditHow,
int aEditWhat,
Object aObjectToSnap,
ILcdGXYLayer aObjectToSnapGXYLayer)
Tries to retrieve a snap target from the given aSnappables.
|
public static final int EDIT_HOW_RESHAPING
ILcdGXYEditor
and ILcdGXYLabelEditor
.public static final int EDIT_HOW_TRANSLATING
ILcdGXYEditor
and ILcdGXYLabelEditor
.public static final int EDIT_HOW_NO_CHANGE
public static final int EDIT_WHAT_OBJECTS
public static final int EDIT_WHAT_LABELS
public static final int EDIT_WHAT_FIRST_TOUCHED_LABEL
public static final int EDIT_WHAT_NO_CHANGE
public TLcdGXYEditControllerModel2()
public static void setClassTraceOn(boolean aClassTraceOn)
true
then all log messages are recorded, otherwise only
the informative, warning and error messages are recorded.aClassTraceOn
- if true then all log messages are recorded,
otherwise only the informative, warning and error messages are recorded.public void setTraceOn(boolean aTraceOn)
true
or false
as argument automatically turns
off tracing for all other class instances for which
setTraceOn
has not been called.
If the argument is false
then only the informative, warning
and error log messages are recorded.aTraceOn
- if true then all log messages are recorded for this
instance. If false, then only the informative, warning and
error log messages are recorded.public boolean isTraceOn()
true
if tracing is enabled for this class.protected TLcdCompositeUndoable createCompositeUndoable()
createTotalOperationUndoable(com.luciad.view.gxy.ILcdGXYView, java.awt.Point, java.awt.Point, java.awt.event.MouseEvent, int, int, com.luciad.view.gxy.ILcdGXYLayerSubsetList)
.
That method provides more useful parameters.ILcdStringTranslator
.public int editHowMode(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent)
EDIT_HOW_RESHAPING
if ctrl is pressed,
EDIT_HOW_TRANSLATING
if no modifiers are pressed, and
EDIT_HOW_NO_CHANGE
otherwise.
Please note that the actual meaning of reshaping and translating is defined by the
implementation of ILcdGXYPainter/ILcdGXYEditor
that is used.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates, provided as
contextual information.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process.EDIT_HOW
.TLcdGXYEditController2.editHowMode(com.luciad.view.gxy.ILcdGXYView, com.luciad.view.gxy.ILcdGXYLayerSubsetList, java.awt.Point, java.awt.Point, java.awt.event.MouseEvent)
public int editWhatMode(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow)
EDIT_WHAT_OBJECTS
if
the objects are touched for aFrom, and EDIT_WHAT_LABELS
if the
labels are touched for aFrom. If the mouse event is a mouse moved event,
the test on the mouse button is skipped. So for that case, it returns what
would happen if a button would be pressed. In all other cases, EDIT_WHAT_NO_CHANGE
is returned.
Touched is defined as ILcdGXYPainter.isTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
or ILcdGXYLabelPainter2.isLabelTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates, provided as
contextual information.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.EDIT_WHAT
.TLcdGXYEditController2.editWhatMode(com.luciad.view.gxy.ILcdGXYView, com.luciad.view.gxy.ILcdGXYLayerSubsetList, java.awt.Point, java.awt.Point, java.awt.event.MouseEvent, int)
public void paintEditing(Graphics aGraphics, ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
Paints the given set of edit candidates in their temporary editing state.
The real painting work is delegated to ILcdGXYPainter.paint
with the mode ILcdGXYPainter.TRANSLATING
or
ILcdGXYPainter.RESHAPING
, depending on aEditHow. Similarly for
labels, the work is delegated to ILcdGXYLabelPainter2.paintLabel
with the mode ILcdGXYLabelPainter2.TRANSLATING
or ILcdGXYLabelPainter2.RESHAPING
.
When either the aEditHow
is EDIT_HOW_NO_CHANGE
or aEditWhat
is EDIT_WHAT_NO_CHANGE
, this method will do nothing.
aGraphics
- The graphics to draw on.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates, provided as
contextual information.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process. You can pass null
if another input device is used.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class
that start with EDIT_WHAT
. For example the result of the
method editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that
are being edited.public ILcdGXYLayerSubsetList editingCandidates(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat)
EDIT_HOW_TRANSLATING
,
the candidates are those objects that are selected, visible and editable
on the given ILcdGXYView
.
If, for these candidates, an object handle is touched, only the object to which the touched
handle belongs is returned, otherwise all candidates are returned.
For EDIT_HOW_RESHAPING
and
EDIT_WHAT_FIRST_TOUCHED_LABEL
,
it returns the first selected object that is visible, editable and touched.
Touched is defined as ILcdGXYPainter.isTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
or ILcdGXYLabelPainter2.isLabelTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
, depending on aEditWhat.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates, provided as
contextual information.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process. You can pass null if another input device is used.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class
that start with EDIT_WHAT
. For example the result of the
method editWhatMode
.null
.public boolean applyEdit(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
ILcdGXYEditor.edit
with the mode TRANSLATED
(or RESHAPED
if aEditHow is
EDIT_HOW_RESHAPING
). Note that the actual meaning of
reshaping and translating is defined by the implementation of
ILcdGXYPainter/ILcdGXYEditor
that is used.
Similarly editing labels is delegated to ILcdGXYLabelEditor.editLabel
with the mode
ILcdGXYLabelEditor.TRANSLATED
or ILcdGXYLabelEditor.RESHAPED
.
This method has no effect if aEditHow is EDIT_HOW_NO_CHANGE
or if
aEditWhat is EDIT_WHAT_NO_CHANGE
.
After all objects/labels are edited, the needed model changed events and label
location changed events are fired.
After the edit is completed, an TLcdUndoableEvent
is fired to the
registered listeners
if any undo information
was provided by the ILcdGXYEditor
s or
ILcdGXYLabelEditor
s to which the real work is delegated. They
can do so by implementing the ILcdUndoableSource
interface and by
firing an TLcdUndoableEvent
when their edit
or editLabel
method is invoked. The undoable event this class sends out to
its listeners is a composite undoable
composed of all the events send out by the ILcdGXYEditor
s or
ILcdGXYLabelEditor
s.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated.aMouseEvent
- The last mouse event that was involved in the edit
process.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class
that start with EDIT_WHAT
. For example the result of the
method editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that
need to be edited.protected TLcdCompositeUndoable createTotalOperationUndoable(ILcdGXYView aGXYView, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
applyEdit
method.
This default implementation returns a TLcdCompositeUndoable
with the display name
"Edit Objects". Override this method if you want another name.aGXYView
- The view for which the edit operation is being performed for which
the undoable is created.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated.aMouseEvent
- The last mouse event that was involved in the edit process. You can pass null if another input device is used.aEditHow
- The edit-how mode: one of the constants in this class that start with
EDIT_HOW
. For example the result of the method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class that start
with EDIT_WHAT
. For example the result of the method
editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that need to be edited.null
.protected TLcdCompositeUndoable createSingleObjectUndoable(Object aDomainObject, ILcdGXYLayer aLayer, ILcdGXYView aGXYView, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
ILcdGXYEditor
for a single domain object. This method is called from the
applyEdit
method.
The default implementation returns a
TLcdCompositeUndoable
with the display name
"Edit " + String.valueOf(aDomainObject)
.aDomainObject
- The domain object from the model which is being edited.aLayer
- The layer of the domain object which is being edited.aGXYView
- The view for which the edit operation is being performed for which
the undoable is created.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated.aMouseEvent
- The last mouse event that was involved in the edit process. You can pass null if another input device is used.aEditHow
- The edit-how mode: one of the constants in this class that start with
EDIT_HOW
. For example the result of the method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class that start
with EDIT_WHAT
. For example the result of the method
editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that need to be edited.null
.public TLcdGXYEditControllerModel2.SnapTargetInfo snapTarget(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, Object aObjectToSnap, ILcdGXYLayer aObjectToSnapGXYLayer)
snapTarget
(or labelSnapTarget
, depending on
aEditWhat) on the ILcdGXYPainter
s (or
ILcdGXYLabelPainter2
s) of the objects in aSnappables. If the
snap target returned by one of those painters is accepted
by the ILcdGXYEditor
of aObjectToSnap, it is returned.
When no snap target can be found this method returns null
.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process. You can pass null if another input device is used.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class
that start with EDIT_WHAT
. For example the result of the
method editWhatMode
.aObjectToSnap
- the object that would like to snap to one of the
candidates in aSnappables, so basically the object that is being edited.aObjectToSnapGXYLayer
- the layer whose model contains aObjectToSnap.public Cursor mouseCursor(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, Point aFrom, Point aTo, MouseEvent aMouseEvent, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
ILcdGXYPainter/ILcdGXYLabelPainter2
of the
touched object using getCursor
or getLabelCursor
, depending on
aEditWhat. As a result, the cursor can be null
if no specific
cursor is needed.
Touched is defined as ILcdGXYPainter.isTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
or ILcdGXYLabelPainter2.isLabelTouched(java.awt.Graphics, int, com.luciad.view.gxy.ILcdGXYContext)
.aGXYView
- The ILcdGXYView
, provided as contextual
information.aSnappables
- The list of potential snapping candidates, provided as
contextual information.aFrom
- The point where the edit originated.aTo
- The point where the edit terminated (so far).aMouseEvent
- The last mouse event that was involved in the edit
process.aEditHow
- The edit-how mode: one of the constants in this class
that start with EDIT_HOW
. For example the result of the
method editHowMode
.aEditWhat
- The edit-what mode: one of the constants in this class
that start with EDIT_WHAT
. For example the result of the
method editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that
are being edited.null
if
no specific cursor is needed.public static String editHowAsString(int aEditHow)
aEditHow
- The edit how mode, one of the constants in
this class that start with EDIT_HOW
.public static String editWhatAsString(int aEditWhat)
aEditWhat
- The edit what mode, one of the constants in
this class that start with EDIT_WHAT
.public void setStringTranslator(ILcdStringTranslator aStringTranslator)
Sets the ILcdStringTranslator
that this controller model should use to
translate the Strings
that will be visible in the user interface.
This method should be called before this editor is used. Any Strings
already
created by this controller model will not be translated with the specified translator.
The following list of Strings
are translated by the given instance:
String
is used as the pattern for a
MessageFormat
.aStringTranslator
- The ILcdStringTranslator
that should be used. Must not be
null
.public void addUndoableListener(ILcdUndoableListener aListener)
ILcdUndoableSource
addUndoableListener
in interface ILcdUndoableSource
aListener
- The listener to be notified when something undoable has happened.public void removeUndoableListener(ILcdUndoableListener aListener)
ILcdUndoableSource
removeUndoableListener
in interface ILcdUndoableSource
aListener
- The listener to remove.protected void fireUndoableHappened(ILcdUndoable aUndoable)
aUndoable
has happened.aUndoable
- The undoable of which the listeners should be notified.public boolean applyEdit(ILcdGXYView aGXYView, ILcdGXYLayerSubsetList aSnappables, List<Point> aFrom, List<Point> aTo, int aEditHow, int aEditWhat, ILcdGXYLayerSubsetList aEditingCandidates)
Applies the edit to every object of the given subset, by delegating the real work to ILcdGXYEditor.edit
with the mode TRANSLATED
(or RESHAPED
if aEditHow
is
EDIT_HOW_RESHAPING
). All input points are passed to the edit
method.
Note that the actual meaning of reshaping and translating is defined by the implementation of
ILcdGXYPainter/ILcdGXYEditor
that is used.
Similarly editing labels is delegated to ILcdGXYLabelEditor.editLabel
with the mode ILcdGXYLabelEditor.TRANSLATED
or ILcdGXYLabelEditor.RESHAPED
.
This method will do nothing if aEditHow
is EDIT_HOW_NO_CHANGE
or if
aEditWhat
is EDIT_WHAT_NO_CHANGE
,
and just return false
.
After all objects/labels are edited, the needed model changed events and label location changed events are fired.
After the edit is completed, an TLcdUndoableEvent
is fired to the
registered listeners
if any undo information was provided by the
ILcdGXYEditor
s or ILcdGXYLabelEditor
s to which the real work is
delegated. They can do so by implementing the ILcdUndoableSource
interface and by firing an TLcdUndoableEvent
when their edit
or editLabel
method is invoked. The undoable event this class sends out to its listeners is a
composite undoable composed of all the events send out by the ILcdGXYEditor
s or
ILcdGXYLabelEditor
s.
aGXYView
- The ILcdGXYView
, provided as contextual information.aSnappables
- The list of potential snapping candidates.aFrom
- A list with point(s) where the edit originated. Should have the same
length as aTo
, and the order of the points in both lists
should be the same, e.g. the location of the first point of
aFrom
when the edit terminated should be passed as the
first point in aTo
.aTo
- A list with point(s) where the edit terminated (so far). Should have
the same length as aFrom
, and the order of the points in
both list should be the same, e.g. the location of the first point of
aFrom
when the edit terminated should be passed as the
first point in aTo
.aEditHow
- The edit-how mode: one of the constants in this class that start with
EDIT_HOW
.aEditWhat
- The edit-what mode: one of the constants in this class that start
with EDIT_WHAT
. For example the result of the method
editWhatMode
.aEditingCandidates
- The objects (and their corresponding layers) that need to be edited.public int getSensitivity()
TLcdGXYContext
passed to the
painters/editors.setSensitivity(int)
,
TLcdGXYContext.getSensitivity()
public void setSensitivity(int aSensitivity)
aSensitivity
- the sensitivity that will be used for painting/editing purposes.getSensitivity()
,
TLcdGXYSelectControllerModel2.setSensitivity(int)