Class DeckEditor

    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JInternalFrame

        javax.swing.JInternalFrame.AccessibleJInternalFrame, javax.swing.JInternalFrame.JDesktopIcon
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      • Fields inherited from class javax.swing.JInternalFrame

        closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTY
      • 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 java.awt.print.Printable

        NO_SUCH_PAGE, PAGE_EXISTS
      • Fields inherited from interface javax.swing.WindowConstants

        DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE
    • Constructor Summary

      Constructors 
      Constructor Description
      DeckEditor()
      Creates a new deck editor with a new, empty Deck attached.
      DeckEditor​(Deck d)
      Creates a new deck editor for the specified Deck.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCards​(java.lang.Object[] cards)  
      void addCards​(java.util.List<PageItem> cards)  
      void addFilesToCardList​(java.io.File[] files)  
      Page addPage()
      Create a new, blank page and add it to the end of the deck.
      boolean canPerformCommand​(AbstractCommand command)
      Returns true if the commandable wishes to handle the given command.
      protected void clearImpl()
      Clears the component by calling its GameComponent.clearAll() method, then repopulating the editor controls.
      PageItem createStandardTile​(java.lang.String name)
      Creates an instance of the tile with the specified name.
      void dispose()
      Releases resources when the editor will no longer be used.
      protected void exportImpl()
      Implements EXPORT for decks.
      void fileChanged​(java.io.File f, FileChangeMonitor.ChangeType type)
      This method is called when a change is detected in a file being monitored by a FileChangeMonitor.
      Page getActivePage()
      Returns the active deck page, or null.
      PageView getActivePageView()
      Returns the page view of the currently edited page, or null.
      javax.swing.border.Border getBorder()  
      Deck getDeck()
      Return the deck instance the editor controls for non-interactive editing.
      protected java.lang.String getDefaultFileName()
      Returns a default file name for a game component that hasn't been saved.
      javax.swing.Icon getFrameIcon()
      Returns the editor window icon.
      int getSelectedPageIndex()  
      void handleOpenRequest​(Deck newCharacter, java.io.File path)
      After installing the component, make sure you update the component object.
      boolean isAttached()
      Returns true if this editor is currently attached to the document tab strip.
      boolean isCommandApplicable​(AbstractCommand command)
      Returns true if the command can be performed by this commandable in its current state.
      void performCommand​(AbstractCommand command)
      Performs the command.
      protected void populateComponentFromDelayedFields()
      This method is called during heartbeats to allow the editor to update properties of the game component that either cannot be updated in response to events or that are more efficient when updated periodically instead of immediately.
      void populateFieldsFromComponent()
      Updates the editor with the current contents of the game component.
      void print()
      Displays a dialog that allows the user to print the deck.
      void print​(boolean direct)
      Prints the content of this deck editor.
      int print​(java.awt.Graphics g1, java.awt.print.PageFormat pf, int pageIndex)  
      protected void printImpl​(java.awt.print.PrinterJob printJob)
      Implementation of the print command for standard game components.
      void redrawPreview()
      Forces the editor to redraw its component preview.
      void removeCurrentPage()  
      void replaceEditedComponent​(Deck newCharacter)
      Replace the currently edited component.
      void save()
      Saves this editor's content to its current save location.
      void selectBestPaper​(double pageWidth, double pageHeight)
      Selects the paper closest to the specified dimensions of those currently included in the deck's paper list.
      void setAttached​(boolean attach)
      Sets whether this editor is attached to the document tab strip.
      void setCurrentPage​(int i)  
      void setFrameIcon​(javax.swing.Icon icon)
      Sets the preferred icon to use for this editor window.
      void setGameComponent​(Deck component)
      Sets the edited game component.
      void setPaperProperties​(PaperProperties p)  
      void tabbedPanesReordered​(JReorderableTabbedPane source, int oldindex, int newindex)  
      • Methods inherited from class javax.swing.JInternalFrame

        addImpl, addInternalFrameListener, createRootPane, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getGlassPane, getInternalFrameListeners, getJMenuBar, getLastCursor, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setCursor, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setUI, show, toBack, toFront, updateUI
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, 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, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, 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, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, size, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • DeckEditor

        public DeckEditor()
        Creates a new deck editor with a new, empty Deck attached.
      • DeckEditor

        public DeckEditor​(Deck d)
        Creates a new deck editor for the specified Deck.
        Parameters:
        d - the deck to be edited
    • Method Detail

      • getDeck

        public Deck getDeck()
        Return the deck instance the editor controls for non-interactive editing.
        Returns:
        the edited deck
      • getActivePage

        public Page getActivePage()
        Returns the active deck page, or null.
        Returns:
        the currently edited page
      • getActivePageView

        public PageView getActivePageView()
        Returns the page view of the currently edited page, or null.
        Returns:
        the view component of the active page
      • createStandardTile

        public PageItem createStandardTile​(java.lang.String name)
        Creates an instance of the tile with the specified name.
        Parameters:
        name - the name of the tile to create (the first line of the tile's entry in its tile set file)
        Returns:
        a new instance of a tile with the specified name
        Throws:
        java.lang.IllegalArgumentException - if no tile with the requested name exists
      • selectBestPaper

        public void selectBestPaper​(double pageWidth,
                                    double pageHeight)
        Selects the paper closest to the specified dimensions of those currently included in the deck's paper list. This method is provided as a convenience for scripts that are setting up expansion boards. (Note that if the paper is for a specific game, you may need to set that game's code in the deck's private settings and reload the paper list before the desired size will be available.)
        Parameters:
        pageWidth - the width of the desired paper
        pageHeight - the height of the desired paper
      • addPage

        public Page addPage()
        Create a new, blank page and add it to the end of the deck.
      • addCards

        public void addCards​(java.lang.Object[] cards)
      • addCards

        public void addCards​(java.util.List<PageItem> cards)
      • populateComponentFromDelayedFields

        protected void populateComponentFromDelayedFields()
        Description copied from class: AbstractGameComponentEditor
        This method is called during heartbeats to allow the editor to update properties of the game component that either cannot be updated in response to events or that are more efficient when updated periodically instead of immediately. If a component has no properties that fit this description, then subclasses can provide an empty implementation.
        Specified by:
        populateComponentFromDelayedFields in class AbstractGameComponentEditor<Deck>
      • redrawPreview

        public void redrawPreview()
        Description copied from class: AbstractGameComponentEditor
        Forces the editor to redraw its component preview. Editors normally manage this redrawing automatically. However, if you make an indirect change to a component, such as changing a setting that affects how the card is drawn, the editor will have no way of knowing about this change and the preview will not reflect the change. Calling this method forces all editors to redraw their previews from scratch.
        Overrides:
        redrawPreview in class AbstractGameComponentEditor<Deck>
        See Also:
        StrangeEonsAppWindow.redrawPreviews()
      • replaceEditedComponent

        public void replaceEditedComponent​(Deck newCharacter)
        Description copied from class: AbstractGameComponentEditor
        Replace the currently edited component. This consists of the following steps:
        1. if newComponent has an on-install event in its private settings, then the on-install event is called
        2. the editor is updated to point to newComponent and it creates a new set of sheets from newComponent and installs them in the preview window
        3. the current state of newComponent is copied from the component to the editor controls
        Overrides:
        replaceEditedComponent in class AbstractGameComponentEditor<Deck>
        Parameters:
        newCharacter - the new component to edit with this editor
      • handleOpenRequest

        public void handleOpenRequest​(Deck newCharacter,
                                      java.io.File path)
        Description copied from class: AbstractGameComponentEditor
        After installing the component, make sure you update the component object.
        Overrides:
        handleOpenRequest in class AbstractGameComponentEditor<Deck>
        Parameters:
        newCharacter - the new component being opened
        path - the file path from which the component was loaded
      • print

        public void print​(boolean direct)
        Prints the content of this deck editor. If a direct print is specified, then then no further deck-related options are offered first. Only the platform-specific print dialog, if any, is displayed before printing begins.
        Parameters:
        direct - if true, no deck-specific print options are shown
      • printImpl

        protected void printImpl​(java.awt.print.PrinterJob printJob)
                          throws javax.print.PrintException,
                                 java.awt.print.PrinterException
        Description copied from class: AbstractGameComponentEditor
        Implementation of the print command for standard game components. Lays out the sheets to be printed on one or more pages and then prints the layout.
        Overrides:
        printImpl in class AbstractGameComponentEditor<Deck>
        Parameters:
        printJob - a printer job; this value is ignored as this implementation will create its own printer job
        Throws:
        javax.print.PrintException - if an error occurs during printing
        java.awt.print.PrinterException - if a printer error occurs during printing
      • print

        public int print​(java.awt.Graphics g1,
                         java.awt.print.PageFormat pf,
                         int pageIndex)
        Specified by:
        print in interface java.awt.print.Printable
      • setPaperProperties

        public void setPaperProperties​(PaperProperties p)
      • removeCurrentPage

        public void removeCurrentPage()
      • setCurrentPage

        public void setCurrentPage​(int i)
      • addFilesToCardList

        public void addFilesToCardList​(java.io.File[] files)
      • fileChanged

        public void fileChanged​(java.io.File f,
                                FileChangeMonitor.ChangeType type)
        Description copied from interface: FileChangeListener
        This method is called when a change is detected in a file being monitored by a FileChangeMonitor. Note that this method will typically be called from a different thread than the one that requested notification.
        Specified by:
        fileChanged in interface FileChangeListener
        Parameters:
        f - the file that has changed
      • dispose

        public void dispose()
        Description copied from class: AbstractStrangeEonsEditor
        Releases resources when the editor will no longer be used. Note that although windows can typically be redisplayed after being disposed of by simply making them visible, editors are not designed to be used after this method is called.

        Note: This method should not typically be called by plug-in code. If you wish to close an open editor, call its AbstractStrangeEonsEditor.close() method instead.

        Overrides:
        dispose in class AbstractGameComponentEditor<Deck>
      • getSelectedPageIndex

        public int getSelectedPageIndex()
      • getBorder

        public final javax.swing.border.Border getBorder()
        Overrides:
        getBorder in class javax.swing.JComponent
      • setFrameIcon

        public void setFrameIcon​(javax.swing.Icon icon)
        Sets the preferred icon to use for this editor window. This icon may be used to represent the window in various parts of the application interface. Possible example uses include the following: the document tab, the editor's item in the Window menu, and the frame icon of the editor's detached window. Note, however, that there is no guarantee that the icon will be used, or how. Furthermore, the icon may be used in modified form.
        Overrides:
        setFrameIcon in class javax.swing.JInternalFrame
        Parameters:
        icon - the preferred icon for the editor window
        See Also:
        JInternalFrame.getFrameIcon()
      • getFrameIcon

        public javax.swing.Icon getFrameIcon()
        Returns the editor window icon.
        Overrides:
        getFrameIcon in class javax.swing.JInternalFrame
        Returns:
        the icon for the editor, or null if no icon is set
      • setAttached

        public void setAttached​(boolean attach)
        Sets whether this editor is attached to the document tab strip. If true, the editor is attached; this is the default state for new editors. If false, the editor is detached from the tab strip. When detached, the editor appears in its own floating window separate from the main application window. The editor reattaches when the window is closed.
        Parameters:
        attach - if true, attaches the window to the tab strip
      • isAttached

        public boolean isAttached()
        Returns true if this editor is currently attached to the document tab strip.
        Returns:
        true if the editor is attached
        See Also:
        setAttached(boolean)