Class AbstractDesignableWorkspace
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JTabbedPane
com.jidesoft.swing.JideTabbedPane
com.inductiveautomation.ignition.designer.designable.AbstractDesignableWorkspace
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,SwingConstants
- Direct Known Subclasses:
AbstractBlockWorkspace
,DefaultDesignableWorkspace
,StandaloneWorkspace
public abstract class AbstractDesignableWorkspace
extends com.jidesoft.swing.JideTabbedPane
This abstract workspace provides the "guts" of workspaces that use a drag-and-drop style interface. This class extends from JideTabbedPane, so multiple drag-and-drop interfaces may be open at once.
Most workspaces that want this functionality should subclass from DefaultDesignableWorkspace
instead of this
one.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.jidesoft.swing.JideTabbedPane
com.jidesoft.swing.JideTabbedPane.ColorProvider, com.jidesoft.swing.JideTabbedPane.GradientColorProvider, com.jidesoft.swing.JideTabbedPane.IgnoreableSingleSelectionModel, com.jidesoft.swing.JideTabbedPane.NoFocusButton, com.jidesoft.swing.JideTabbedPane.PageLastFocusTracker, com.jidesoft.swing.JideTabbedPane.TabListCellRenderer
Nested classes/interfaces inherited from class javax.swing.JTabbedPane
JTabbedPane.AccessibleJTabbedPane, JTabbedPane.ModelListener
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IDesignTool
The currently selected tool.static final String
static final String
protected List<DesignableWorkspaceListener>
These listeners are notified when things happen to the designable workspace such as switching selected designable containers.protected LoggerEx
protected Map<DesignableContainer,
DesignPanel> Holds all of the currently editing containersprotected List<JComponent>
The currently selected componentsprotected ISelectionControl
The current "selection control" - which is what typically adds handles to the selected components.protected IDesignTool
The standard tool - used for moving, resizing, and marquee selectionFields inherited from class com.jidesoft.swing.JideTabbedPane
_focusChangeListener, _tabEditingAllowed, _tabEditValidator, BOLDACTIVETAB_PROPERTY, BOX_STYLE_PROPERTY, BUTTON_CLOSE, BUTTON_EAST, BUTTON_LIST, BUTTON_NORTH, BUTTON_SOUTH, BUTTON_WEST, COLOR_THEME_DEFAULT, COLOR_THEME_OFFICE2003, COLOR_THEME_VSNET, COLOR_THEME_WIN2K, COLOR_THEME_WINXP, GRIPPER_PROPERTY, HIDE_IF_ONE_TAB_PROPERTY, ONENOTE_COLOR_PROVIDER, PROPERTY_COLOR_THEME, PROPERTY_CONTENT_BORDER_INSETS, PROPERTY_DRAG_OVER_DISABLED, PROPERTY_SELECTED_INDEX, PROPERTY_SHOW_CLOSE_BUTTON_ON_MOUSE_OVER, PROPERTY_TAB_AREA_INSETS, PROPERTY_TAB_COLOR_PROVIDER, PROPERTY_TAB_INSETS, PROPERTY_TAB_LEADING_COMPONENT, PROPERTY_TAB_RESIZE_MODE, PROPERTY_TAB_SHAPE, PROPERTY_TAB_TRAILING_COMPONENT, RESIZE_MODE_COMPRESSED, RESIZE_MODE_DEFAULT, RESIZE_MODE_FIT, RESIZE_MODE_FIXED, RESIZE_MODE_NONE, SCROLL_TAB_ON_WHEEL_PROPERTY, SHAPE_BOX, SHAPE_DEFAULT, SHAPE_ECLIPSE, SHAPE_ECLIPSE3X, SHAPE_EXCEL, SHAPE_FLAT, SHAPE_OFFICE2003, SHAPE_ROUNDED_FLAT, SHAPE_ROUNDED_VSNET, SHAPE_VSNET, SHAPE_WINDOWS, SHAPE_WINDOWS_SELECTED, SHOW_CLOSE_BUTTON_ON_TAB_PROPERTY, SHOW_CLOSE_BUTTON_PROPERTY, SHOW_ICONS_PROPERTY, SHOW_TAB_AREA_PROPERTY, SHOW_TAB_BUTTONS_PROPERTY, SHOW_TAB_CONTENT_PROPERTY, SHRINK_TAB_PROPERTY, TAB_CLOSABLE_PROPERTY, USE_DEFAULT_SHOW_CLOSE_BUTTON_ON_TAB_PROPERTY, USE_DEFAULT_SHOW_ICONS_PROPERTY
Fields inherited from class javax.swing.JTabbedPane
changeEvent, changeListener, model, SCROLL_TAB_LAYOUT, tabPlacement, WRAP_TAB_LAYOUT
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Fields inherited from interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
protected void
close
(DesignableContainer container) Closes the DesignPanel for the given container, if it is open.protected Optional<JComponent>
findDesignableContainer
(ResourcePath resourcePath) Finds a DesignableContainer that is currently open for editing in this workspace.findDropTarget
(List<JComponent> itemsUnderDrop, DropTargetDragEvent event) Override to allow dropping onto itemsint
The background color for the design panelsabstract IGridSettings
Returns the settings for the grid/guide/snapping systemabstract DesignableDelegate
getItemDelegate
(DesignableContainer container) Called to provide the DesignableDelegate that is appropriate for the given DesignableContainerint
The currently selected designable container, or null if none is selectedReturns the current selection list.int
The number of items currently selectedgetSelectionPopupMenu
(List<JComponent> component) Gives the workspace a chance to provide a popup menu for the currently selected itemsprotected JPopupMenu
getTabPopupMenu
(DesignableContainer container) Return the popup menu to display for a given tab on right clickprotected abstract String
getTabToolTip
(DesignableContainer container) Return the tooltip for the tab representing the given containervoid
Called when the user double-clicks using the selection tool.boolean
handleDrop
(Object droppedOn, DropTargetDropEvent event) void
Called when the user edit-clicks a component (clicks on an already selected component)boolean
boolean
isOpen
(DesignableContainer container) boolean
isOpen
(ResourcePath resourcePath) boolean
Returns whether or not the zoom level of design panels can be altered.protected DesignPanel
newDesignPanel
(DesignableContainer container) protected LoggerEx
protected IDesignTool
protected boolean
onBeforeClose
(DesignableContainer container) Provides subclasses a chance to intercept when a tab is closed.protected void
onClose
(DesignableContainer container) Provides subclasses a chance to handle when a tab is closedprotected void
onCurrentToolChanged
(IDesignTool oldTool, IDesignTool newTool) Provides AbstractDesignableWorkspace subclasses a way to be notified when the design tool has been changed.void
onEditorPaint
(DesignPanel panel, Graphics g) Provides subclasses a chance to paint onto each tab's DesignPanel backgroundprotected void
open
(DesignableContainer container) void
openArbitraryTab
(JComponent component, Icon icon, String tabText, String toolTipText) void
void
void
protected void
removeTab
(DesignableContainer container) Closes the DesignPanel for the given container without saving.boolean
void
setCurrentTool
(IDesignTool newTool) void
setDesignTime
(boolean designing) void
setSelectedContainer
(DesignableContainer container) Selects this designable container's tab.void
setSelectedItems
(List<JComponent> newSelection) Sets the selection to the items in the list.void
setSelectedItems
(JComponent... newSelection) Sets the selection to the components in the listprotected abstract void
setStatusMessage
(String message) Called when the tool or design panel has a status message to display.protected void
setupWorkspaceHomeTab
(Icon icon, JComponent welcomePanel) void
toggleItemSelection
(JComponent... newSelection) void
updateMouseLocation
(int x, int y) Called when the mouse moves over the design area.void
Called when the selection changes or the design tool changes (since the ISelectionControl is created by the IDesignTool), or the design tool notifies the system that it has changed itself.void
updateStatusBarText
(Point location, int inputMask) Methods inherited from class com.jidesoft.swing.JideTabbedPane
add, addNotify, addTabEditingListener, calculateTabListPopupPosition, cancelTabEditing, clearVisComp, createFocusChangeListener, createNoFocusButton, createTabList, createTabListPopup, editTabAt, fireStateChanged, fireTabEditing, getCloseAction, getColorTheme, getContentBorderInsets, getDefaultColorTheme, getDefaultTabResizeMode, getDefaultTabStyle, getDisplayTitleAt, getEditingTabIndex, getIconForTab, getLastFocusedComponent, getPageLastFocusTrackers, getResourceString, getSelectedTabFont, getStringConverter, getTabAlignment, getTabAreaInsets, getTabAtLocation, getTabColorProvider, getTabEditingListeners, getTabEditingValidator, getTabHeight, getTabInsets, getTabLeadingComponent, getTabListCellRenderer, getTabResizeMode, getTabShape, getTabTrailingComponent, getUI, getUIClassID, hasFocusComponent, hideTabListPopup, insertTab, isAutoFocusOnTabHideClose, isAutoRequestFocus, isBoldActiveTab, isCloseTabOnMouseMiddleButton, isDragOverDisabled, isHideOneTab, isHideTrailingWhileNoButtons, isLayoutTrailingComponentBeforeButtons, isRightClickSelect, isScrollSelectedTabOnWheel, isShowCloseButton, isShowCloseButtonOnMouseOver, isShowCloseButtonOnSelectedTab, isShowCloseButtonOnTab, isShowGripper, isShowIconsOnTab, isShowTabArea, isShowTabButtons, isShowTabContent, isSuppressSetSelectedIndex, isSuppressStateChangedEvents, isTabClosableAt, isTabEditing, isTabEditingAllowed, isTabEditingAllowed, isTabListPopupVisible, isTabShown, isUseDefaultShowCloseButtonOnTab, isUseDefaultShowIconsOnTab, moveSelectedTabTo, popupSelectedIndex, processMouseSelection, removeAll, removeNotify, removeTabAt, removeTabEditingListener, repaintContentBorder, repaintTabAreaAndContentBorder, requestFocusForVisibleComponent, resetDefaultCloseAction, scrollSelectedTabToVisible, setAutoFocusOnTabHideClose, setAutoRequestFocus, setBoldActiveTab, setCloseAction, setCloseTabOnMouseMiddleButton, setColorTheme, setComponentAt, setContentBorderInsets, setDragOverDisabled, setHideOneTab, setHideTrailingWhileNoButtons, setLayoutTrailingComponentBeforeButtons, setRightClickSelect, setScrollSelectedTabOnWheel, setSelectedIndex, setSelectedTabFont, setShowCloseButton, setShowCloseButtonOnMouseOver, setShowCloseButtonOnSelectedTab, setShowCloseButtonOnTab, setShowGripper, setShowIconsOnTab, setShowTabArea, setShowTabButtons, setShowTabContent, setStringConverter, setSuppressSetSelectedIndex, setSuppressStateChangedEvents, setTabAlignment, setTabAreaInsets, setTabClosableAt, setTabColorProvider, setTabEditingAllowed, setTabEditingValidator, setTabInsets, setTabLeadingComponent, setTabListCellRenderer, setTabResizeMode, setTabShape, setTabTrailingComponent, setUI, setUseDefaultShowCloseButtonOnTab, setUseDefaultShowIconsOnTab, showTabListPopup, stopTabEditing, updateUI
Methods inherited from class javax.swing.JTabbedPane
add, add, add, add, addChangeListener, addTab, addTab, addTab, createChangeListener, getAccessibleContext, getBackgroundAt, getBoundsAt, getChangeListeners, getComponentAt, getDisabledIconAt, getDisplayedMnemonicIndexAt, getForegroundAt, getIconAt, getMnemonicAt, getModel, getSelectedComponent, getSelectedIndex, getTabComponentAt, getTabCount, getTabLayoutPolicy, getTabPlacement, getTabRunCount, getTitleAt, getToolTipText, getToolTipTextAt, indexAtLocation, indexOfComponent, indexOfTab, indexOfTab, indexOfTabComponent, isEnabledAt, paramString, remove, remove, removeChangeListener, setBackgroundAt, setDisabledIconAt, setDisplayedMnemonicIndexAt, setEnabledAt, setForegroundAt, setIconAt, setMnemonicAt, setModel, setSelectedComponent, setTabComponentAt, setTabLayoutPolicy, setTabPlacement, setTitleAt, setToolTipTextAt
Methods inherited from class javax.swing.JComponent
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Methods inherited from class java.awt.Container
addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
DESIGNABLE_CONTAINER_ICON_KEY
- See Also:
-
DESIGNTIME_PROPNAME
- See Also:
-
openContainers
Holds all of the currently editing containers -
selectionTool
The standard tool - used for moving, resizing, and marquee selection -
currentTool
The currently selected tool. -
selectionControl
The current "selection control" - which is what typically adds handles to the selected components. May be null. -
listeners
These listeners are notified when things happen to the designable workspace such as switching selected designable containers. -
selectedItems
The currently selected components -
log
-
-
Constructor Details
-
AbstractDesignableWorkspace
protected AbstractDesignableWorkspace()
-
-
Method Details
-
setupWorkspaceHomeTab
-
createWorkspaceHomeTab
-
openArbitraryTab
-
newSelectionTool
-
updateStatusBarText
-
setStatusMessage
Called when the tool or design panel has a status message to display. Should be some sort of passive status display, not a popup. -
newLogger
-
getSelectionTool
-
setSelectedContainer
Selects this designable container's tab.- Parameters:
container
- the container to get the tab for- Throws:
IllegalArgumentException
- if the container is not open.
-
getSelectedContainer
The currently selected designable container, or null if none is selected -
getSelectedDesignPanel
-
getSelectedItems
Returns the current selection list. (defensive copy) -
getSelectedItemsCount
public int getSelectedItemsCount()The number of items currently selected -
setSelectedItems
Sets the selection to the components in the list -
setSelectedItems
Sets the selection to the items in the list. -
toggleItemSelection
-
isOpen
-
isOpen
-
getOpenContainerCount
public int getOpenContainerCount() -
isDesignTime
public boolean isDesignTime() -
isZoomingEnabled
public boolean isZoomingEnabled()Returns whether or not the zoom level of design panels can be altered. Default is always true. -
setDesignTime
public void setDesignTime(boolean designing) -
findDesignableContainer
Finds a DesignableContainer that is currently open for editing in this workspace.- Parameters:
resourcePath
- The resource path of the resource container to look for- Returns:
- The container with the given id and scope, or null if that resource isn't currently open.
-
getTabToolTip
Return the tooltip for the tab representing the given container -
getTabPopupMenu
Return the popup menu to display for a given tab on right click- Parameters:
container
- a selected container- Returns:
- the constructed menu (default has close, close others, and close all actions) or null for no menu
-
open
-
newDesignPanel
-
close
Closes the DesignPanel for the given container, if it is open. -
removeTab
Closes the DesignPanel for the given container without saving. Used for reconnect -
getCurrentTool
-
setCurrentTool
-
onCurrentToolChanged
Provides AbstractDesignableWorkspace subclasses a way to be notified when the design tool has been changed. -
updateSelectionControl
public void updateSelectionControl()Called when the selection changes or the design tool changes (since the ISelectionControl is created by the IDesignTool), or the design tool notifies the system that it has changed itself.
Allows the currently installed IDesignTool to create a new ISelectionControl (handle set) and install it on the selection.
-
getSelectionControl
-
onBeforeClose
Provides subclasses a chance to intercept when a tab is closed. Return false to prevent the tab from closing. -
onClose
Provides subclasses a chance to handle when a tab is closed -
onEditorPaint
Provides subclasses a chance to paint onto each tab's DesignPanel background -
getEditorBackground
The background color for the design panels -
getGridSettings
Returns the settings for the grid/guide/snapping system -
getSelectionPopupMenu
Gives the workspace a chance to provide a popup menu for the currently selected items -
updateMouseLocation
public void updateMouseLocation(int x, int y) Called when the mouse moves over the design area. Coordinates will be (-1, -1) when the mouse leaves the area. -
getItemDelegate
Called to provide the DesignableDelegate that is appropriate for the given DesignableContainer -
restrictMovementToParentBounds
public boolean restrictMovementToParentBounds() -
getAcceptableDropActions
-
findDropTarget
Override to allow dropping onto items -
handleDrop
-
handleDoubleClick
Called when the user double-clicks using the selection tool. -
handleEditClick
Called when the user edit-clicks a component (clicks on an already selected component) -
addDesignableWorkspaceListener
-
removeDesignableWorkspaceListener
-
paintInteractionLayerLow
-
paintInteractionLayerHigh
-