Class JepConsole

  • All Implemented Interfaces:
    adams.core.logging.LoggingSupporter, adams.core.TextSupporter, adams.flow.sink.TextSupplier, adams.gui.core.MenuBarProvider, adams.gui.sendto.SendToActionSupporter, ImageObserver, MenuContainer, Serializable, Accessible

    public class JepConsole
    extends adams.gui.core.BasePanel
    implements adams.gui.core.MenuBarProvider, adams.flow.sink.TextSupplier, adams.gui.sendto.SendToActionSupporter, adams.core.logging.LoggingSupporter
    Console for editing and running Jep/Python scripts.
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Detail

      • m_MenuBar

        protected JMenuBar m_MenuBar
        the menu bar.
      • m_MenuItemFileNew

        protected JMenuItem m_MenuItemFileNew
        the new menu item.
      • m_MenuItemFileOpen

        protected JMenuItem m_MenuItemFileOpen
        the open menu item.
      • m_MenuFileLoadRecent

        protected JMenu m_MenuFileLoadRecent
        the "load recent" submenu.
      • m_MenuItemFileSave

        protected JMenuItem m_MenuItemFileSave
        the save menu item.
      • m_MenuItemFileSaveAs

        protected JMenuItem m_MenuItemFileSaveAs
        the save as menu item.
      • m_MenuItemEditUndo

        protected JMenuItem m_MenuItemEditUndo
        the undo menu item.
      • m_MenuItemEditRedo

        protected JMenuItem m_MenuItemEditRedo
        the redo menu item.
      • m_MenuItemEditCut

        protected JMenuItem m_MenuItemEditCut
        the cut menu item.
      • m_MenuItemEditCopy

        protected JMenuItem m_MenuItemEditCopy
        the copy menu item.
      • m_MenuItemEditPaste

        protected JMenuItem m_MenuItemEditPaste
        the paste menu item.
      • m_MenuItemEditSelectAll

        protected JMenuItem m_MenuItemEditSelectAll
        the select all menu item.
      • m_MenuItemEditFind

        protected JMenuItem m_MenuItemEditFind
        the find menu item.
      • m_MenuItemEditFindNext

        protected JMenuItem m_MenuItemEditFindNext
        the find next menu item.
      • m_MenuItemExecutionRun

        protected JMenuItem m_MenuItemExecutionRun
        the execute menu item.
      • m_TitleGenerator

        protected adams.gui.core.TitleGenerator m_TitleGenerator
        for generating the title.
      • m_RecentFilesHandler

        protected adams.gui.core.RecentFilesWithEncodingHandler<JMenu> m_RecentFilesHandler
        the recent files handler.
      • m_CurrentFile

        protected File m_CurrentFile
        the current file.
      • m_CurrentEncoding

        protected String m_CurrentEncoding
        the current file encoding.
      • m_Modified

        protected boolean m_Modified
        whether the content was modified.
      • m_IgnoreChanges

        protected boolean m_IgnoreChanges
        whether to ignore changes.
      • m_Undo

        protected UndoManager m_Undo
        for managing undo/redo.
      • m_LastFind

        protected String m_LastFind
        the last search string used.
      • m_ChangeListeners

        protected HashSet<ChangeListener> m_ChangeListeners
        the listeners for modification events.
      • m_FileChooser

        protected transient adams.gui.chooser.TextFileChooser m_FileChooser
        for saving the content.
      • m_Logger

        protected adams.core.logging.Logger m_Logger
        the logger in use.
      • m_Running

        protected boolean m_Running
        whether a script is running.
    • Constructor Detail

      • JepConsole

        public JepConsole()
    • Method Detail

      • initialize

        protected void initialize()
        Initializes the members.
        Overrides:
        initialize in class adams.gui.core.BasePanel
      • initGUI

        protected void initGUI()
        For initializing the GUI.
        Overrides:
        initGUI in class adams.gui.core.BasePanel
      • addRecentItem

        protected void addRecentItem()
        Adds the current file/encoding as recent item.
      • getMenuBar

        public JMenuBar getMenuBar()
        Creates a menu bar (singleton per panel object). Can be used in frames.
        Specified by:
        getMenuBar in interface adams.gui.core.MenuBarProvider
        Returns:
        the menu bar
      • update

        protected void update()
        Updates title and menu items.
      • updateTitle

        protected void updateTitle()
        Updates the title of the dialog.
      • updateMenu

        protected void updateMenu()
        Updates the state of the menu items.
      • setContent

        public void setContent​(String value)
        Sets the content to display. Resets the modified state.
        Parameters:
        value - the text
      • getContent

        public String getContent()
        Returns the content to display.
        Returns:
        the text
      • getCurrentFile

        public File getCurrentFile()
        Returns the currently loaded file.
        Returns:
        the current file, null if none loaded
      • getCurrentEncoding

        public String getCurrentEncoding()
        Returns the current file encoding.
        Returns:
        the current encoding, null if no file loaded
      • setModified

        public void setModified​(boolean value)
        Sets the modified state. If false, all edits are discarded and the last search string reset as well.
        Parameters:
        value - if true then the content is flagged as modified
      • isModified

        public boolean isModified()
        Returns whether the content has been modified.
        Returns:
        true if the content was modified
      • checkForModified

        public boolean checkForModified()
        Returns whether we can proceed with the operation or not, depending on whether the user saved the content or discarded the changes.
        Returns:
        true if safe to proceed
      • open

        public boolean open()
        Pops up dialog to open a file.
        Returns:
        true if successfully opened
      • open

        public boolean open​(File file)
        Opens the specified file and loads/displays the content.
        Parameters:
        file - the file to load
        Returns:
        true if successfully opened
      • open

        public boolean open​(File file,
                            String encoding)
        Opens the specified file and loads/displays the content.
        Parameters:
        file - the file to load
        encoding - the encoding to use, use null or empty string for default UTF-8
        Returns:
        true if successfully opened
      • save

        public void save()
        Pops up dialog to save the content in a file if no filename provided, otherwise saves the .
      • saveAs

        public void saveAs()
        Pops up dialog to save the content in a file.
      • save

        protected void save​(File file,
                            String encoding)
        Saves the content under the specified file.
        Parameters:
        file - the file to save the content in
        encoding - the file encoding to use
      • clear

        public void clear()
        Removes all content. Does not reset the undos.
      • close

        protected void close()
        Closes the dialog, if possible.
      • canUndo

        public boolean canUndo()
        Checks whether an undo action is available.
        Returns:
        true if an undo action is available
      • undo

        public void undo()
        Performs an undo, if possible.
      • canRedo

        public boolean canRedo()
        Checks whether a redo action is available.
        Returns:
        true if a redo action is available
      • redo

        public void redo()
        Performs a redo, if possible.
      • canCut

        public boolean canCut()
        Checks whether text can be cut at the moment.
        Returns:
        true if text is available for cutting
      • cut

        public void cut()
        Cuts the currently selected text and places it on the clipboard.
      • canCopy

        public boolean canCopy()
        Checks whether text can be copied at the moment.
        Returns:
        true if text is available for copying
      • copy

        public void copy()
        Copies the currently selected text to the clipboard.
      • canPaste

        public boolean canPaste()
        Checks whether text can be pasted at the moment.
        Returns:
        true if text is available for pasting
      • paste

        public void paste()
        Pastes the text from the clipboard into the document.
      • selectAll

        public void selectAll()
        Selects all the text.
      • find

        public void find()
        Initiates a search.
      • findNext

        public void findNext()
        Finds the next occurrence.
      • isRunning

        public boolean isRunning()
        Returns whether a script is currently running.
        Returns:
        true if running
      • runScript

        public void runScript()
        Executes the current script.
      • addChangeListener

        public void addChangeListener​(ChangeListener l)
        Adds the given change listener to its internal list.
        Parameters:
        l - the listener to add
      • removeChangeListener

        public void removeChangeListener​(ChangeListener l)
        Removes the given change listener from its internal list.
        Parameters:
        l - the listener to remove
      • notifyChangeListeners

        protected void notifyChangeListeners()
        Sends an event to all change listeners.
      • getCustomSupplyTextMenuItemCaption

        public String getCustomSupplyTextMenuItemCaption()
        Returns the text for the menu item.
        Specified by:
        getCustomSupplyTextMenuItemCaption in interface adams.flow.sink.TextSupplier
        Returns:
        the menu item text, null for default
      • getCustomTextFileFilter

        public adams.gui.core.ExtensionFileFilter getCustomTextFileFilter()
        Returns a custom file filter for the file chooser.
        Specified by:
        getCustomTextFileFilter in interface adams.flow.sink.TextSupplier
        Returns:
        the file filter, null if to use default one
      • supplyText

        public String supplyText()
        Supplies the text.
        Specified by:
        supplyText in interface adams.flow.sink.TextSupplier
        Specified by:
        supplyText in interface adams.core.TextSupporter
        Returns:
        the text, null if none available
      • getSendToClasses

        public Class[] getSendToClasses()
        Returns the classes that the supporter generates.
        Specified by:
        getSendToClasses in interface adams.gui.sendto.SendToActionSupporter
        Returns:
        the classes
      • hasSendToItem

        public boolean hasSendToItem​(Class[] cls)
        Checks whether something to send is available.
        Specified by:
        hasSendToItem in interface adams.gui.sendto.SendToActionSupporter
        Parameters:
        cls - the requested classes
        Returns:
        true if an object is available for sending
      • getSendToItem

        public Object getSendToItem​(Class[] cls)
        Returns the object to send.
        Specified by:
        getSendToItem in interface adams.gui.sendto.SendToActionSupporter
        Parameters:
        cls - the requested classes
        Returns:
        the item to send
      • getFileFilter

        protected adams.gui.core.ExtensionFileFilter getFileFilter()
        Returns the filter for Python files.
        Returns:
        the filter
      • getFileChooser

        protected adams.gui.chooser.TextFileChooser getFileChooser()
        Returns the file chooser and creates it if necessary.
        Returns:
        the file chooser
      • getLogger

        public adams.core.logging.Logger getLogger()
        Returns the logger in use.
        Specified by:
        getLogger in interface adams.core.logging.LoggingSupporter
        Returns:
        the logger
      • isLoggingEnabled

        public boolean isLoggingEnabled()
        Returns whether logging is enabled.
        Specified by:
        isLoggingEnabled in interface adams.core.logging.LoggingSupporter
        Returns:
        true if at least Level.INFO