@Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, DropDownAction action, Dockable dockable ){ return converter.createView( ActionType.DROP_DOWN, action, ViewTarget.TITLE, dockable ); } } );
@Override public void uninstall( DockController controller ){ ActionViewConverter converter = controller.getActionViewConverter(); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.TITLE, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.MENU, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.DROP_DOWN, null ); super.uninstall( controller ); } }
/** * Searches a converter for the given <code>action</code> and <code>target</code>. * @param <A> the type that the converter will produce * @param <D> the type of action needed as input * @param action the action that will be transformed * @param target the target platform * @return the converter or <code>null</code> if no converter is found */ protected <A, D extends DockAction> ViewGenerator<D,A> getConverter( ActionType<D> action, ViewTarget<? super A> target ){ Entry<D, A> entry = getEntry( action, target ); if( entry.clientGenerator != null ) return entry.clientGenerator; if( entry.themeGenerator != null ) return entry.themeGenerator; return entry.defaultGenerator; }
@Override public void uninstall( DockController controller ){ final ActionViewConverter converter = controller.getActionViewConverter(); converter.putDefault( ActionType.BUTTON, TOOLBAR_TITLE, null ); }
/** * Creates and sets up a new view. * @param <A> the type of the view * @param <D> the type of action to convert * @param type the type of action * @param action the action for which a view is created * @param target the target platform, where the view will be shown * @param dockable the Dockable for which the action is used * @return the new view or <code>null</code> if nothing should be shown * @throws IllegalArgumentException if an unknown argument is used */ public <A, D extends DockAction> A createView( ActionType<D> type, D action, ViewTarget<A> target, Dockable dockable ){ ViewGenerator<D,A> converter = getConverter( type, target ); if( converter == null ) throw new IllegalArgumentException( "That combination is not known: " + type + " " + target ); return converter.create( this, action, dockable ); }
public ActionViewConverter createActionViewConverter( DockController controller, ControllerSetupCollection setup ) { return new ActionViewConverter(); }
putDefault( ActionType.BUTTON, ViewTarget.MENU, new ViewGenerator<ButtonDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ return new ButtonMenuHandler( action, dockable ); putDefault( ActionType.CHECK, ViewTarget.MENU, new ViewGenerator<SelectableDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return new SelectableMenuHandler( action, dockable, new JCheckBoxMenuItem() ); putDefault( ActionType.MENU, ViewTarget.MENU, new ViewGenerator<MenuDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, MenuDockAction action, Dockable dockable ){ return new MenuMenuHandler( action, dockable ); putDefault( ActionType.RADIO, ViewTarget.MENU, new ViewGenerator<SelectableDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return new SelectableMenuHandler( action, dockable, new JRadioButtonMenuItem() ); putDefault( ActionType.SEPARATOR, ViewTarget.MENU, new ViewGenerator<SeparatorAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SeparatorAction action, Dockable dockable ){ if( action.shouldDisplay( ViewTarget.MENU )) putDefault( ActionType.DROP_DOWN, ViewTarget.MENU, new ViewGenerator<DropDownAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, DropDownAction action, Dockable dockable ){ return new DropDownMenuHandler( action, dockable ); putDefault( ActionType.BUTTON, ViewTarget.TITLE, new ViewGenerator<ButtonDockAction, BasicTitleViewItem<JComponent>>(){ public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ BasicButtonHandler handler = new BasicButtonHandler( action, dockable ); putDefault( ActionType.CHECK, ViewTarget.TITLE, new ViewGenerator<SelectableDockAction, BasicTitleViewItem<JComponent>>(){
/** * Creates and sets up a new view. * @param <A> the type of the view * @param <D> the type of action to convert * @param type the type of action * @param action the action for which a view is created * @param target the target platform, where the view will be shown * @param dockable the Dockable for which the action is used * @return the new view or <code>null</code> if nothing should be shown * @throws IllegalArgumentException if an unknown argument is used */ public <A, D extends DockAction> A createView( ActionType<D> type, D action, ViewTarget<A> target, Dockable dockable ){ ViewGenerator<D,A> converter = getConverter( type, target ); if( converter == null ) throw new IllegalArgumentException( "That combination is not known: " + type + " " + target ); return converter.create( this, action, dockable ); }
@Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, MenuDockAction action, Dockable dockable ){ return converter.createView( ActionType.MENU, action, ViewTarget.TITLE, dockable ); } } );
@Override public void uninstall( DockController controller ){ ActionViewConverter converter = controller.getActionViewConverter(); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.TITLE, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.MENU, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.DROP_DOWN, null ); super.uninstall( controller ); } }
putDefault( ActionType.BUTTON, ViewTarget.MENU, new ViewGenerator<ButtonDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ return new ButtonMenuHandler( action, dockable ); putDefault( ActionType.CHECK, ViewTarget.MENU, new ViewGenerator<SelectableDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return new SelectableMenuHandler( action, dockable, new JCheckBoxMenuItem() ); putDefault( ActionType.MENU, ViewTarget.MENU, new ViewGenerator<MenuDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, MenuDockAction action, Dockable dockable ){ return new MenuMenuHandler( action, dockable ); putDefault( ActionType.RADIO, ViewTarget.MENU, new ViewGenerator<SelectableDockAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return new SelectableMenuHandler( action, dockable, new JRadioButtonMenuItem() ); putDefault( ActionType.SEPARATOR, ViewTarget.MENU, new ViewGenerator<SeparatorAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, SeparatorAction action, Dockable dockable ){ if( action.shouldDisplay( ViewTarget.MENU )) putDefault( ActionType.DROP_DOWN, ViewTarget.MENU, new ViewGenerator<DropDownAction, MenuViewItem<JComponent>>(){ public MenuViewItem<JComponent> create( ActionViewConverter converter, DropDownAction action, Dockable dockable ){ return new DropDownMenuHandler( action, dockable ); putDefault( ActionType.BUTTON, ViewTarget.TITLE, new ViewGenerator<ButtonDockAction, BasicTitleViewItem<JComponent>>(){ public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ BasicButtonHandler handler = new BasicButtonHandler( action, dockable ); putDefault( ActionType.CHECK, ViewTarget.TITLE, new ViewGenerator<SelectableDockAction, BasicTitleViewItem<JComponent>>(){
/** * Searches a converter for the given <code>action</code> and <code>target</code>. * @param <A> the type that the converter will produce * @param <D> the type of action needed as input * @param action the action that will be transformed * @param target the target platform * @return the converter or <code>null</code> if no converter is found */ protected <A, D extends DockAction> ViewGenerator<D,A> getConverter( ActionType<D> action, ViewTarget<? super A> target ){ Entry<D, A> entry = getEntry( action, target ); if( entry.clientGenerator != null ) return entry.clientGenerator; if( entry.themeGenerator != null ) return entry.themeGenerator; return entry.defaultGenerator; }
@Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, SeparatorAction action, Dockable dockable ){ return converter.createView( ActionType.SEPARATOR, action, ViewTarget.TITLE, dockable ); } } );
@Override public void uninstall( DockController controller ){ ActionViewConverter converter = controller.getActionViewConverter(); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.TITLE, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.MENU, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.DROP_DOWN, null ); super.uninstall( controller ); } }
@Override public void install( final DockController controller ){ final ActionViewConverter converter = controller.getActionViewConverter(); converter.putDefault( ActionType.BUTTON, TOOLBAR_TITLE, new ViewGenerator<ButtonDockAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ converter.putDefault( ActionType.MENU, TOOLBAR_TITLE, new ViewGenerator<MenuDockAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, MenuDockAction action, Dockable dockable ){ converter.putDefault( ActionType.SEPARATOR, TOOLBAR_TITLE, new ViewGenerator<SeparatorAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, SeparatorAction action, Dockable dockable ){ converter.putDefault( ActionType.BUTTON, DockActionItem.TOOLBAR, new ViewGenerator<ButtonDockAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, ButtonDockAction action, Dockable dockable ){ converter.putDefault( ActionType.CHECK, DockActionItem.TOOLBAR, new ViewGenerator<SelectableDockAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ converter.putDefault( ActionType.DROP_DOWN, DockActionItem.TOOLBAR, new ViewGenerator<DropDownAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, DropDownAction action, Dockable dockable ){ converter.putDefault( ActionType.MENU, DockActionItem.TOOLBAR, new ViewGenerator<MenuDockAction, BasicTitleViewItem<JComponent>>(){ @Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, MenuDockAction action, Dockable dockable ){
/** * Registers a new {@link ViewGenerator} to this ActionViewConverter. The * generator will have the normal priority. * @param <A> the type of view created by the converter * @param <D> the type of action needed as input for the converter * @param action the type of actions needed as input * @param target the platform for which <code>converter</code> creates output * @param generator the generator to store, may be <code>null</code> */ public <A, D extends DockAction> void putTheme( ActionType<D> action, ViewTarget<A> target, ViewGenerator<D,A> generator ){ if( action == null ) throw new IllegalArgumentException( "Action must not be null" ); if( target == null ) throw new IllegalArgumentException( "Target must not be null" ); Entry<D,A> entry = getEntry( action, target ); entry.themeGenerator = generator; }
@Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return converter.createView( ActionType.CHECK, action, ViewTarget.TITLE, dockable ); } } );
@Override public void uninstall( DockController controller ){ ActionViewConverter converter = controller.getActionViewConverter(); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.TITLE, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.MENU, null ); converter.putTheme( CPanelPopup.PANEL_POPUP, ViewTarget.DROP_DOWN, null ); super.uninstall( controller ); } }
/** * Registers a new {@link ViewGenerator} to this ActionViewConverter. The * generator will have the high priority. * @param <A> the type of view created by the converter * @param <D> the type of action needed as input for the converter * @param action the type of actions needed as input * @param target the platform for which <code>converter</code> creates output * @param generator the generator to store, may be <code>null</code> */ public <A, D extends DockAction> void putClient( ActionType<D> action, ViewTarget<A> target, ViewGenerator<D,A> generator ){ if( action == null ) throw new IllegalArgumentException( "Action must not be null" ); if( target == null ) throw new IllegalArgumentException( "Target must not be null" ); Entry<D,A> entry = getEntry( action, target ); entry.clientGenerator = generator; }
@Override public BasicTitleViewItem<JComponent> create( ActionViewConverter converter, SelectableDockAction action, Dockable dockable ){ return converter.createView( ActionType.RADIO, action, ViewTarget.TITLE, dockable ); } } );