All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bibliothek.gui.dock.common.menu.CPreferenceMenuPiece Maven / Gradle / Ivy

Go to download

DockingFrames is an open source Java Swing docking framework, licenced under LGPL 2.1. This is the same distribution as the original distribution (http://www.docking-frames.org/), only reinstalled in maven

There is a newer version: 1.1.2p20b.fix-1
Show newest version
/*
 * Bibliothek - DockingFrames
 * Library built on Java/Swing, allows the user to "drag and drop"
 * panels containing any Swing-Component the developer likes to add.
 * 
 * Copyright (C) 2007 Benjamin Sigg
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 * 
 * Benjamin Sigg
 * [email protected]
 * CH - Switzerland
 */
package bibliothek.gui.dock.common.menu;

import java.awt.Component;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JMenuItem;

import bibliothek.extension.gui.dock.preference.DefaultPreferenceModel;
import bibliothek.extension.gui.dock.preference.PreferenceDialog;
import bibliothek.extension.gui.dock.preference.PreferenceModel;
import bibliothek.extension.gui.dock.preference.PreferenceTreeDialog;
import bibliothek.extension.gui.dock.preference.PreferenceTreeModel;
import bibliothek.gui.dock.common.CControl;
import bibliothek.gui.dock.common.CPreferenceModel;
import bibliothek.gui.dock.facile.menu.MenuPieceText;
import bibliothek.gui.dock.support.menu.BaseMenuPiece;

/**
 * A menu piece that shows an entry for opening the preferences-dialog. The
 * {@link PreferenceModel model} to show on the dialog can either be set
 * explicitly using {@link #setModel(PreferenceModel)}, or else will be read
 * from {@link CControl#getPreferenceModel()}.
* Note: clients can use {@link #setup(CControl)} to ensure that the * {@link CControl} has a model. * @author Benjamin Sigg */ public class CPreferenceMenuPiece extends BaseMenuPiece{ /** text for this menu */ private MenuPieceText text; /** * Creates a new {@link CPreferenceMenuPiece}. Reads the model of control, * if control has no model then a new {@link PreferenceModel} will * be created and set. * @param control the control whose model will be shown * @return a new menu piece * @see CControl#getPreferenceModel() * @see CControl#setPreferenceModel(PreferenceModel) */ public static CPreferenceMenuPiece setup( CControl control ){ if( control.getPreferenceModel() == null ) control.setPreferenceModel( new CPreferenceModel( control )); return new CPreferenceMenuPiece( control ); } /** where to store the model */ private CControl control; /** the model which is to be used on this dialog */ private PreferenceModel model; private AbstractAction action = new AbstractAction(){ public void actionPerformed( ActionEvent e ) { action(); } }; /** * Creates a new menu piece. * @param control the control for which this piece works, not null */ public CPreferenceMenuPiece( CControl control ) { if( control == null ) throw new IllegalArgumentException( "control must not be null" ); this.control = control; text = new MenuPieceText( "PreferenceMenuPiece.text", this ){ protected void changed( String oldValue, String newValue ){ action.putValue( AbstractAction.NAME, newValue ); } }; add( new JMenuItem( action ) ); } @Override public void bind(){ super.bind(); text.setController( control.getController() ); } @Override public void unbind(){ super.unbind(); text.setController( null ); } /** * Explicitly sets the model which will be shown on the dialog. If * null is set, then this menu will try to show * {@link CControl#getPreferenceModel()}. * @param model the model to use or null */ public void setModel( PreferenceModel model ) { this.model = model; } /** * Gets the model which was explicitly set. * @return the model or null * @see #setModel(PreferenceModel) */ public PreferenceModel getModel() { return model; } /** * Opens a dialog with the current {@link PreferenceModel}. */ protected void action(){ PreferenceModel model = this.model; if( model == null ) model = control.getPreferenceModel(); if( model == null ) model = new DefaultPreferenceModel( control.getController() ); Component owner = control.intern().getController().findRootWindow(); control.getPreferences().load( model, false ); if( model instanceof PreferenceTreeModel ){ PreferenceTreeDialog.openDialog( (PreferenceTreeModel)model, owner ); } else{ PreferenceDialog.openDialog( model, owner ); } control.getPreferences().store( model ); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy