package bibliothek.notes.view; import java.awt.Window; import bibliothek.gui.DockFrontend; import bibliothek.gui.DockStation; import bibliothek.gui.Dockable; import bibliothek.gui.dock.FlapDockStation; import bibliothek.gui.dock.ScreenDockStation; import bibliothek.gui.dock.SplitDockStation; import bibliothek.gui.dock.util.PropertyKey; import bibliothek.notes.model.Note; import bibliothek.notes.model.NoteModel; import bibliothek.notes.util.ResourceSet; import bibliothek.notes.view.actions.Hide; import bibliothek.notes.view.actions.NoteDeleteAction; import bibliothek.notes.view.panels.ListView; /** * The set of all root-{@link DockStation}s used in this application. Additionally * there are other dock-related properties. * @author Benjamin Sigg * */ public class ViewManager { /** the {@link Dockable} that shows a list of all {@link Note}s */ private ListView list; /** the manager that can show and hide views for {@link Note}s */ private NoteViewManager notes; /** the {@link DockStation} in the center of the {@link MainFrame} */ private SplitDockStation split; /** the {@link DockStation} at the east side of the {@link MainFrame} */ private FlapDockStation east; /** the {@link DockStation} at the west side of the {@link MainFrame} */ private FlapDockStation west; /** the {@link DockStation} at the south side of the {@link MainFrame} */ private FlapDockStation south; /** the {@link DockStation} at the north side of the {@link MainFrame} */ private FlapDockStation north; /** the {@link DockStation} that represents the screen */ private ScreenDockStation screen; /** link to the docking-frames */ private DockFrontend frontend; /** * Creates the new manager * @param frontend link to the docking-frames * @param owner the window used as parent for all dialogs * @param secure whether this application runs in webstart or not * @param model the set of {@link Note}s */ public ViewManager( DockFrontend frontend, Window owner, boolean secure, NoteModel model ){ this.frontend = frontend; notes = new NoteViewManager( frontend, this, model ); list = new ListView( notes, model ); frontend.getController().addActionGuard( new NoteDeleteAction( model )); frontend.getController().addActionGuard( new Hide( frontend, notes )); frontend.getController().getProperties().set( PropertyKey.DOCK_STATION_TITLE, "Notes" ); frontend.getController().getProperties().set( PropertyKey.DOCK_STATION_ICON, ResourceSet.APPLICATION_ICONS.get( "application" ) ); frontend.addDockable( "list", list ); split = new SplitDockStation(); east = new FlapDockStation(); west = new FlapDockStation(); south = new FlapDockStation(); north = new FlapDockStation(); screen = new ScreenDockStation( owner ); frontend.addRoot( "screen", screen ); frontend.addRoot( "split", split ); frontend.addRoot( "east", east ); frontend.addRoot( "west", west ); frontend.addRoot( "south", south ); frontend.addRoot( "north", north ); frontend.setDefaultStation( split ); } /** * Gets the {@link DockStation} that is on the east side of the {@link MainFrame}. * @return the station in the east */ public FlapDockStation getEast(){ return east; } /** * Gets the {@link DockStation} that is on the north side of the {@link MainFrame}. * @return the station in the north */ public FlapDockStation getNorth(){ return north; } /** * Gets the {@link DockStation} which represents the screen. * @return the screen-station */ public ScreenDockStation getScreen(){ return screen; } /** * Gets the {@link DockStation} that is on the south side of the {@link MainFrame}. * @return the station in the south */ public FlapDockStation getSouth(){ return south; } /** * Gets the {@link DockStation} that is in the center of the {@link MainFrame}. * @return the station in the center */ public SplitDockStation getSplit(){ return split; } /** * Gets the {@link DockStation} that is on the west side of the {@link MainFrame}. * @return the station in the west */ public FlapDockStation getWest(){ return west; } /** * Gets the unique identifier which is used for a certain station. * @param station one of the stations known to this manager * @return the identifier or <code>null</code> if the station * is unknown */ public String getName( DockStation station ){ if( station == split ) return "split"; if( station == east ) return "east"; if( station == west ) return "west"; if( station == north ) return "north"; if( station == south ) return "south"; if( station == screen ) return "screen"; return null; } /** * Gets the link to the docking-frames. * @return the link */ public DockFrontend getFrontend(){ return frontend; } /** * Gets a station identified by its unique identifier. * @param name the unique identifier * @return the station or <code>null</code> */ public DockStation getStation( String name ){ return frontend.getRoot( name ); } /** * Gets the {@link Dockable} list of {@link Note}s. * @return the list */ public ListView getList(){ return list; } /** * Gets the manager that is used to show or hide views * for {@link Note}s. * @return the manager */ public NoteViewManager getNotes(){ return notes; } }