KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > util > browser > plugins > fractal > menu > AddSubComponentAction


1 /*====================================================================
2  
3  Objectweb Browser Framework
4  Copyright (C) 2000-2004 INRIA & USTL - LIFL - GOAL
5  Contact: openccm@objectweb.org
6  
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Lesser General Public
9  License as published by the Free Software Foundation; either
10  version 2.1 of the License, or any later version.
11  
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Lesser General Public License for more details.
16  
17  You should have received a copy of the GNU Lesser General Public
18  License along with this library; if not, write to the Free Software
19  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
20  USA
21  
22  Initial developer(s): Jerome Moroy.
23  Contributor(s): ______________________________________.
24  
25  ---------------------------------------------------------------------
26  $Id: AddSubComponentAction.java,v 1.1 2004/04/20 16:37:27 moroy Exp $
27  ====================================================================*/

28
29 package org.objectweb.util.browser.plugins.fractal.menu;
30
31 import java.awt.Dimension JavaDoc;
32
33 import org.objectweb.fractal.api.Component;
34 import org.objectweb.fractal.api.NoSuchInterfaceException;
35 import org.objectweb.fractal.api.control.ContentController;
36 import org.objectweb.fractal.api.control.LifeCycleController;
37 import org.objectweb.util.browser.api.MenuItem;
38 import org.objectweb.util.browser.api.MenuItemTreeView;
39 import org.objectweb.util.browser.api.TreeView;
40 import org.objectweb.util.browser.core.common.DynamicTree;
41 import org.objectweb.util.browser.gui.api.DialogAction;
42 import org.objectweb.util.browser.gui.api.DialogBox;
43 import org.objectweb.util.browser.gui.api.TreeProvider;
44 import org.objectweb.util.browser.gui.lib.DefaultDialogBox;
45 import org.objectweb.util.browser.gui.lib.DefaultTreeProvider;
46 import org.objectweb.util.browser.gui.lib.TreeBox;
47 import org.objectweb.util.browser.plugins.fractal.FcBrowser;
48
49 /**
50  * This action allows to add a component into a composite component.
51  * @author <a HREF="mailto:Jerome.Moroy@lifl.fr">Jerome Moroy</a>
52  * @version 0.1
53  */

54 public class AddSubComponentAction
55   implements MenuItem,
56              DialogAction
57 {
58     //==================================================================
59
//
60
// Internal states.
61
//
62
//==================================================================
63

64     /** TheTreeBox used. */
65     protected TreeBox treeBox_;
66     
67     /** The controller used to add a new component component. */
68     protected ContentController contentInterface_;
69     
70     //==================================================================
71
//
72
// No constructor.
73
//
74
//==================================================================
75

76     //==================================================================
77
//
78
// No Internal method.
79
//
80
//==================================================================
81

82     //==================================================================
83
//
84
// Public methods for ExtendedActionListener interface.
85
//
86
//==================================================================
87

88     /**
89      * @see org.objectweb.util.browser.api.MenuItem#getStatus(org.objectweb.util.browser.gui.common.TreeView)
90      */

91     public int getStatus(TreeView treeView) {
92         ContentController contentInterface = (ContentController)treeView.getSelectedObject();
93         Component component = FcBrowser.getComponent(contentInterface);
94         try {
95             LifeCycleController lcc = FcBrowser.getLifeCycleController(component);
96             String JavaDoc status = lcc.getFcState();
97             if (status.equals(LifeCycleController.STARTED))
98                 return MenuItem.DISABLED_STATUS;
99         } catch (NoSuchInterfaceException e) { }
100         return MenuItem.ENABLED_STATUS;
101     }
102     
103     /**
104      * The action event.
105      */

106     public void actionPerformed(MenuItemTreeView e) throws Exception JavaDoc {
107         contentInterface_ = (ContentController)e.getSelectedObject();
108         
109         TreeProvider treeProvider = new DefaultTreeProvider();
110         DynamicTree tree = treeProvider.createDynamicTree(e);
111         
112         treeBox_ = new TreeBox(tree);
113         treeBox_.setPreferredSize(new Dimension JavaDoc(450, 350));
114         
115         DialogBox dialog = new DefaultDialogBox("Select a component to add");
116         dialog.setValidateAction(this);
117         dialog.addElementBox(treeBox_);
118         dialog.show();
119     }
120     
121     //==================================================================
122
//
123
// Public methods for DialogAction interface.
124
//
125
//==================================================================
126

127     /**
128      * Executes an action
129      */

130     public void executeAction() throws Exception JavaDoc {
131         Object JavaDoc o = treeBox_.getObject();
132         try{
133             Component subComponent = (Component)o;
134             contentInterface_.addFcSubComponent(subComponent);
135         }catch(ClassCastException JavaDoc e){
136             throw new Exception JavaDoc("You must select a component!");
137         }
138     }
139     
140 }
Popular Tags