Class ALcdZoomNavigationControl

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
com.luciad.gui.swing.navigationcontrols.ALcdZoomNavigationControl
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
TLcdGXYZoomNavigationControl, TLspZoomNavigationControl

public abstract class ALcdZoomNavigationControl extends JPanel
This class implements the zoom component of the navigation panel. Interacting with this component with the mouse will generate a double value that can be used to interact with a view or other component. This value corresponds with the distance on the y-axis between the center of the component, and the mouse cursor. It can be retrieved using the method getZoom(). Usually implementations will want to know when the value is changed internally, as a consequence of mouse events directly on the component. A subclass therefore has to implement the abstract methods startInteraction() and endInteraction(). The first method is called when a mouse pressed event is received on the component, and indicates that a valid zoom value is available. That value can then be used to typically alter the zoom level of a view. The second method will be called on a mouse released event and indicates that no usable value is currently available. As an example, an implementation can start a timer in startInteraction that periodically checks the value returned by getZoomY to change a view, until a call to startInteraction stops the timer.

The appearance of this component is specified by a number of images. Furthermore the appearance can be changed at runtime. The method setEnabled(boolean) can be used to toggle between an active and an inactive appearance. By default the active appearance is only used when the mouse hovers over the component. The active/inactive appearance is usually shared with a few other (navigation control) components. See TLcdMouseOverGroup for more details.

The exact appearance is specified by the following images in png format:

  • zoom_slider_inactive.png: the main slider, when the navigation controls are inactive.
  • zoom_slider.png: the main slider, when the navigation controls is active.
  • zoom_indicator_inactive.png: The indicator that moves over the slider, when the navigation controls are inactive.
  • zoom_indicator.png: The indicator that moves over the slider, when the navigation controls are active.
  • zoom_plus_inactive.png: the plus button when the navigation controls are inactive.
  • zoom_min_inactive.png: the min button when the navigation controls are inactive.
  • zoom_plus.png: the plus button when the navigation controls are active.
  • zoom_min.png: the min button when the navigation controls are active.
  • zoom_plus_selected.png: the plus button when the mouse is hovering over the button.
  • zoom_min_selected.png: the min button when the mouse is hovering over the button.
All the images should have the same width. The width of the images will also be the width of the component. Furthermore, the images 'zoom_slider_inactive.png' and 'zoom_slider.png' should have the same height. All the 'plus' images should have the same height too, and all the 'min' images as well. The height of the component will be the sum of the height of the slider, the height of the plus images and the height of the min images. The height of 'zoom_indicator.png' and 'zoom_indicator_inactive.png' should be smaller than the height of the slider images. For a consistent look they should be symmetrical in the Y direction, and the height should be as small as possible (no space with alpha value equal to zero below or above the visible part). Take a look at the default images to get a better understanding of what is required.

Below you can see what the zoom control looks like with the default set of images.

Since:
10.0
See Also:
  • Field Details

    • ZOOM_COMPONENT_DIR

      public static final String ZOOM_COMPONENT_DIR
      Default name of the subfolder in the navigationcontrols image folder containing all zoom panel images.
      See Also:
  • Constructor Details

    • ALcdZoomNavigationControl

      public ALcdZoomNavigationControl(String aImagePath) throws IOException
      A constructor for the pancomponent. The constructor also loads the necessary images and will initialize all the subcomponents of the component.

      The default image path is usually the path to the root folder of the navigation controls + ZOOM_COMPONENT_DIR. This constant can be used by factory methods to create a complete set of navigation controls with a single path to a root folder.

      Parameters:
      aImagePath - The (relative or absolute) path to the directory where the images are stored. For relative paths, the classpath and the working directory are searched.
      Throws:
      IOException - when one of the necessary images is missing.
  • Method Details

    • setEnabled

      public void setEnabled(boolean enabled)
      Overrides:
      setEnabled in class JComponent
    • getZoom

      protected double getZoom()
      This method returns a double that represents the vertical position of the slider. It corresponds with the y-coordinate of the mouse relative to the center of the component, but scaled using the Dimension of the panel, so the resulting values is between 1 and -1. Note: you should only use this method between a call to startInteraction() and a call to endInteraction(). It will not return usable values at any other time.
      Returns:
      a point representing the relative position of the slider with respect to the center of the panel.
      See Also:
    • startInteraction

      protected abstract void startInteraction()
      This method will be called when the mouse starts interacting with the panel. Between a call to this method and a call to endInteraction() the method getZoom() will return a double that can be used to interact with an object.
      See Also:
    • endInteraction

      protected abstract void endInteraction()
      This method will be called when the mouse stops interacting with the panel. Between a call to startInteraction() and a call to this method, the method getZoom() will return a double that can be used to interact with an object.
      See Also:
    • getPreferredSize

      public Dimension getPreferredSize()
      Returns the dimension specified by the images used.
      Overrides:
      getPreferredSize in class JComponent
      Returns:
      the size of the images this panel is a based on.
    • getMinimumSize

      public Dimension getMinimumSize()
      Returns the dimension specified by the images used.
      Overrides:
      getMinimumSize in class JComponent
      Returns:
      the size of the images this panel is a based on.
    • getMaximumSize

      public Dimension getMaximumSize()
      Returns the dimension specified by the images used.
      Overrides:
      getMaximumSize in class JComponent
      Returns:
      the size of the images this panel is based on.