Class LinkedModeUI

  • Direct Known Subclasses:
    EditorLinkedModeUI

    public class LinkedModeUI
    extends Object
    The UI for linked mode. Detects events that influence behavior of the linked mode UI and acts upon them.

    LinkedModeUI relies on all added LinkedModeUITargets to provide implementations of ITextViewer that implement ITextViewerExtension, and the documents being edited to implement IDocumentExtension3.

    Clients may instantiate and extend this class.

    Since:
    3.0
    • Field Detail

      • CYCLE_NEVER

        public static final Object CYCLE_NEVER
        Constant indicating that this UI should never cycle from the last position to the first and vice versa.
      • CYCLE_ALWAYS

        public static final Object CYCLE_ALWAYS
        Constant indicating that this UI should always cycle from the last position to the first and vice versa.
      • CYCLE_WHEN_NO_PARENT

        public static final Object CYCLE_WHEN_NO_PARENT
        Constant indicating that this UI should cycle from the last position to the first and vice versa if its model is not nested.
    • Constructor Detail

      • LinkedModeUI

        public LinkedModeUI​(LinkedModeModel model,
                            LinkedModeUI.LinkedModeUITarget[] targets)
        Creates a new UI on the given model and the set of viewers. The model must provide a tab stop sequence with a non-empty list of tab stops.
        Parameters:
        model - the linked mode model
        targets - the non-empty list of targets upon which the linked mode UI should act
      • LinkedModeUI

        public LinkedModeUI​(LinkedModeModel model,
                            ITextViewer viewer)
        Convenience constructor for just one viewer.
        Parameters:
        model - the linked mode model
        viewer - the viewer upon which the linked mode UI should act
      • LinkedModeUI

        public LinkedModeUI​(LinkedModeModel model,
                            ITextViewer[] viewers)
        Convenience constructor for multiple viewers.
        Parameters:
        model - the linked mode model
        viewers - the non-empty list of viewers upon which the linked mode UI should act
      • LinkedModeUI

        public LinkedModeUI​(LinkedModeModel model,
                            LinkedModeUI.LinkedModeUITarget target)
        Convenience constructor for one target.
        Parameters:
        model - the linked mode model
        target - the target upon which the linked mode UI should act
    • Method Detail

      • enter

        public void enter()
        Starts this UI on the first position.
      • setExitPolicy

        public void setExitPolicy​(LinkedModeUI.IExitPolicy policy)
        Sets an IExitPolicy to customize the exit behavior of this linked mode UI.
        Parameters:
        policy - the exit policy to use.
      • setExitPosition

        public void setExitPosition​(LinkedModeUI.LinkedModeUITarget target,
                                    int offset,
                                    int length,
                                    int sequence)
                             throws BadLocationException
        Sets the exit position to move the caret to when linked mode mode is exited.
        Parameters:
        target - the target where the exit position is located
        offset - the offset of the exit position
        length - the length of the exit position (in case there should be a selection)
        sequence - set to the tab stop position of the exit position, or LinkedPositionGroup.NO_STOP if there should be no tab stop.
        Throws:
        BadLocationException - if the position is not valid in the viewer's document
      • setExitPosition

        public void setExitPosition​(ITextViewer viewer,
                                    int offset,
                                    int length,
                                    int sequence)
                             throws BadLocationException
        Sets the exit position to move the caret to when linked mode is exited.
        Parameters:
        viewer - the viewer where the exit position is located
        offset - the offset of the exit position
        length - the length of the exit position (in case there should be a selection)
        sequence - set to the tab stop position of the exit position, or LinkedPositionGroup.NO_STOP if there should be no tab stop.
        Throws:
        BadLocationException - if the position is not valid in the viewer's document
      • setCyclingMode

        public void setCyclingMode​(Object mode)
        Sets the cycling mode to either of CYCLING_ALWAYS, CYCLING_NEVER, or CYCLING_WHEN_NO_PARENT, which is the default.
        Parameters:
        mode - the new cycling mode.
      • getSelectedRegion

        public IRegion getSelectedRegion()
        Returns the currently selected region or null.
        Returns:
        the currently selected region or null
      • setDoContextInfo

        public void setDoContextInfo​(boolean doContextInfo)
        Sets the context info property. If set to true, context info will be invoked on the current target's viewer whenever a position is switched.
        Parameters:
        doContextInfo - true if context information should be displayed
      • setPositionListener

        protected void setPositionListener​(LinkedModeUI.ILinkedModeUIFocusListener listener)
        Sets the focus callback which will get informed when the focus of the linked mode UI changes.

        If there is a listener installed already, it will be replaced.

        Parameters:
        listener - the new listener, never null.
      • setSimpleMode

        public void setSimpleMode​(boolean simple)
        Sets the "simple" mode of the receiver. A linked mode UI in simple mode merely draws the exit position, but not the target, focus, and slave positions. Default is false. This method must be called before it is entered.
        Parameters:
        simple - true if the UI should be in simple mode.
      • enableColoredLabels

        public void enableColoredLabels​(boolean isEnabled)
        Enables the support for colored labels in the proposal popup.

        Completion proposals can implement ICompletionProposalExtension6 to provide colored proposal labels.

        Parameters:
        isEnabled - if true the support for colored labels is enabled in the proposal popup
        Since:
        3.4