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.TabListCellRendererNested classes/interfaces inherited from class javax.swing.JTabbedPane
JTabbedPane.AccessibleJTabbedPane, JTabbedPane.ModelListenerNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected IDesignToolThe currently selected tool.static final Stringstatic final Stringprotected List<DesignableWorkspaceListener>These listeners are notified when things happen to the designable workspace such as switching selected designable containers.protected LoggerExprotected Map<DesignableContainer,DesignPanel> Holds all of the currently editing containersprotected List<JComponent>The currently selected componentsprotected ISelectionControlThe current "selection control" - which is what typically adds handles to the selected components.protected IDesignToolThe 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_PROPERTYFields inherited from class javax.swing.JTabbedPane
changeEvent, changeListener, model, SCROLL_TAB_LAYOUT, tabPlacement, WRAP_TAB_LAYOUTFields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTHFields 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 TypeMethodDescriptionvoidprotected voidclose(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 itemsintThe background color for the design panelsabstract IGridSettingsReturns the settings for the grid/guide/snapping systemabstract DesignableDelegategetItemDelegate(DesignableContainer container) Called to provide the DesignableDelegate that is appropriate for the given DesignableContainerintThe currently selected designable container, or null if none is selectedReturns the current selection list.intThe number of items currently selectedgetSelectionPopupMenu(List<JComponent> component) Gives the workspace a chance to provide a popup menu for the currently selected itemsprotected JPopupMenugetTabPopupMenu(DesignableContainer container) Return the popup menu to display for a given tab on right clickprotected abstract StringgetTabToolTip(DesignableContainer container) Return the tooltip for the tab representing the given containervoidCalled when the user double-clicks using the selection tool.booleanhandleDrop(Object droppedOn, DropTargetDropEvent event) voidCalled when the user edit-clicks a component (clicks on an already selected component)booleanbooleanisOpen(DesignableContainer container) booleanisOpen(ResourcePath resourcePath) booleanReturns whether or not the zoom level of design panels can be altered.protected DesignPanelnewDesignPanel(DesignableContainer container) protected LoggerExprotected IDesignToolprotected booleanonBeforeClose(DesignableContainer container) Provides subclasses a chance to intercept when a tab is closed.protected voidonClose(DesignableContainer container) Provides subclasses a chance to handle when a tab is closedprotected voidonCurrentToolChanged(IDesignTool oldTool, IDesignTool newTool) Provides AbstractDesignableWorkspace subclasses a way to be notified when the design tool has been changed.voidonEditorPaint(DesignPanel panel, Graphics g) Provides subclasses a chance to paint onto each tab's DesignPanel backgroundprotected voidopen(DesignableContainer container) voidopenArbitraryTab(JComponent component, Icon icon, String tabText, String toolTipText) voidvoidvoidprotected voidremoveTab(DesignableContainer container) Closes the DesignPanel for the given container without saving.booleanvoidsetCurrentTool(IDesignTool newTool) voidsetDesignTime(boolean designing) voidsetSelectedContainer(DesignableContainer container) Selects this designable container's tab.voidsetSelectedItems(List<JComponent> newSelection) Sets the selection to the items in the list.voidsetSelectedItems(JComponent... newSelection) Sets the selection to the components in the listprotected abstract voidsetStatusMessage(String message) Called when the tool or design panel has a status message to display.protected voidsetupWorkspaceHomeTab(Icon icon, JComponent welcomePanel) voidtoggleItemSelection(JComponent... newSelection) voidupdateMouseLocation(int x, int y) Called when the mouse moves over the design area.voidCalled 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.voidupdateStatusBarText(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, updateUIMethods 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, setToolTipTextAtMethods 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, updateMethods 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, validateTreeMethods 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
-