ikayaki.gui
Class ProjectExplorerPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by ikayaki.gui.ProjectComponent
                      extended by ikayaki.gui.ProjectExplorerPanel
All Implemented Interfaces:
MeasurementListener, ProjectListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible

public class ProjectExplorerPanel
extends ProjectComponent

Creates a history/autocomplete field (browserField) for choosing the project directory, a listing of project files in that directory (explorerTable) and in that listing a line for creating new project, which has a textbox for project name, an AF/TH ComboBox and a "Create new" button (createNewProjectButton) for actuating the creation. Also has a right-click popup menu for exporting project files.

Author:
Samuli Kaipiainen
See Also:
Serialized Form

Nested Class Summary
private  class ProjectExplorerPanel.NewProjectPanel
          Panel with components for creating a new project.
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
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.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
private  LastExecutor autocompleteExecutor
          LastExecutor for scheduling autocomplete results to separate thread (disk access and displaying).
private  JButton browseButton
           
private  JPanel browsePanel
          Holds browserField and browseButton
private  JComboBox browserField
          Text field for writing directory to change to.
private  JTextField browserFieldEditor
           
private  ComponentFlasher browserFieldFlasher
           
(package private)  boolean browserFieldPopupIsAutocomplete
          Tells whether current popup menu is autocomplete list (and not directory history).
private  FittedComboBoxRenderer browserFieldRenderer
           
(package private)  boolean browserFieldUpdatingPopup
          Tells whether browserField's popup menu list is being updated, and we don't want those ActionEvents.
private  File directory
          Currently open directory.
private  ProjectExplorerTable explorerTable
           
private  JScrollPane explorerTableScrollPane
           
private  ProjectExplorerPanel.NewProjectPanel newProjectPanel
           
private  ProjectComponent parent
          The component (MainViewPanel) whose setProject() method will be called on opening a new project file.
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
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
 
Constructor Summary
ProjectExplorerPanel(ProjectComponent parent)
          Call next constructor...
ProjectExplorerPanel(ProjectComponent parent, Project project)
          Creates all components, sets directory as the last open directory or opened project's directory, initializes files with files from that directory.
 
Method Summary
private  void doAutoComplete()
          Updates autocomplete popup-menu.
private  File[] getAutocompleteFiles(String dirmatch)
          Reads matching directories from given directory name's parent.
private  File[] getDirectoryHistory()
          Reads current directory history from Settings.
private  void setBrowserFieldCursorToEnd()
          Deprecated. not needed anymore; cursor seems to be there anyway?
private  void setBrowserFieldPopup(File[] files, boolean uniformFit)
          Sets browserField popup-menu-list as given files; also clears any selection.
private  boolean setDirectory(File directory)
          Attempts to change to the given directory.
 void setProject(Project project)
          Call super.setProject(project), highlight selected project, or unhighlight unselected project.
 
Methods inherited from class ikayaki.gui.ProjectComponent
getParentFrame, getProject, measurementUpdated, projectUpdated
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, 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, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getWidth, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, 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, 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
add, add, add, add, add, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parent

private final ProjectComponent parent
The component (MainViewPanel) whose setProject() method will be called on opening a new project file.


browsePanel

private final JPanel browsePanel
Holds browserField and browseButton


browserField

private final JComboBox browserField
Text field for writing directory to change to. Autocomplete results appear to Combo Box' popup window, scheduled by LastExecutor. Directory history appears to the same popup window when the down-arrow right to text field is clicked.


browserFieldRenderer

private final FittedComboBoxRenderer browserFieldRenderer

browserFieldEditor

private final JTextField browserFieldEditor

browserFieldFlasher

private final ComponentFlasher browserFieldFlasher

browserFieldPopupIsAutocomplete

boolean browserFieldPopupIsAutocomplete
Tells whether current popup menu is autocomplete list (and not directory history).


browserFieldUpdatingPopup

boolean browserFieldUpdatingPopup
Tells whether browserField's popup menu list is being updated, and we don't want those ActionEvents.


browseButton

private final JButton browseButton

explorerTable

private final ProjectExplorerTable explorerTable

explorerTableScrollPane

private final JScrollPane explorerTableScrollPane

newProjectPanel

private ProjectExplorerPanel.NewProjectPanel newProjectPanel

autocompleteExecutor

private final LastExecutor autocompleteExecutor
LastExecutor for scheduling autocomplete results to separate thread (disk access and displaying).


directory

private File directory
Currently open directory.

Constructor Detail

ProjectExplorerPanel

public ProjectExplorerPanel(ProjectComponent parent)
Call next constructor...

Parameters:
parent - the component whose setProject() method will be called on opening a new project file.

ProjectExplorerPanel

public ProjectExplorerPanel(ProjectComponent parent,
                            Project project)
Creates all components, sets directory as the last open directory or opened project's directory, initializes files with files from that directory.

Parameters:
parent - the component whose setProject() method will be called on opening a new project file.
project - project to load and whose directory to set as current directory.
Method Detail

setProject

public void setProject(Project project)
Call super.setProject(project), highlight selected project, or unhighlight unselected project.

Overrides:
setProject in class ProjectComponent
Parameters:
project - project opened, or null to open no project.

setDirectory

private boolean setDirectory(File directory)
Attempts to change to the given directory. Updates browserField and explorerTable with new directory.

Parameters:
directory - directory to change to.
Returns:
true if succesful, false otherwise.

getDirectoryHistory

private File[] getDirectoryHistory()
Reads current directory history from Settings.

Returns:
current directory history. Should never return null.

getAutocompleteFiles

private File[] getAutocompleteFiles(String dirmatch)
Reads matching directories from given directory name's parent.

Parameters:
dirmatch - beginning of directory to which match the directories in its parent directory...
Returns:
matching directories.

doAutoComplete

private void doAutoComplete()
Updates autocomplete popup-menu.


setBrowserFieldPopup

private void setBrowserFieldPopup(File[] files,
                                  boolean uniformFit)
Sets browserField popup-menu-list as given files; also clears any selection.

Parameters:
files - list of files to set the list to.
uniformFit - true if all the file paths should be cut short from the same directory, false otherwise.

setBrowserFieldCursorToEnd

private void setBrowserFieldCursorToEnd()
Deprecated. not needed anymore; cursor seems to be there anyway?

Sets browserField's cursor to text field's (right) end.