KickJava   Java API By Example, From Geeks To Geeks.

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


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: CreateComponentTypeAction.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.util.List JavaDoc;
32 import java.util.Vector JavaDoc;
33
34 import org.objectweb.fractal.api.type.InterfaceType;
35 import org.objectweb.fractal.api.type.TypeFactory;
36 import org.objectweb.util.browser.api.MenuItem;
37 import org.objectweb.util.browser.api.MenuItemTreeView;
38 import org.objectweb.util.browser.api.TreeView;
39 import org.objectweb.util.browser.core.api.ContextContainer;
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.ExtendedTreeChooserBox;
47 import org.objectweb.util.browser.gui.lib.LabelBox;
48 import org.objectweb.util.browser.plugins.fractal.FcBrowser;
49
50 /**
51  * This action allows to create a new component type.
52  * @author <a HREF="mailto:Jerome.Moroy@lifl.fr">Jerome Moroy</a>
53  * @version 0.1
54  */

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

65     /** The label box. */
66     protected LabelBox name_;
67     
68     /** The tree chooser box. */
69     protected ExtendedTreeChooserBox extendedTreeChooserBox_;
70     
71     /** The context container to use. */
72     protected ContextContainer cc_;
73     
74     //==================================================================
75
//
76
// No constructor.
77
//
78
//==================================================================
79

80     //==================================================================
81
//
82
// Internal methods.
83
//
84
//==================================================================
85

86     /**
87      * Create a box containing all the box to specify all the params.
88      */

89     protected void createBox(DialogBox dialogBox, DynamicTree tree) {
90         name_= new LabelBox("Name");
91         dialogBox.addElementBox(name_);
92         extendedTreeChooserBox_ = new ExtendedTreeChooserBox("Interface Type",tree, dialogBox);
93         dialogBox.addElementBox(extendedTreeChooserBox_);
94     }
95     
96     //==================================================================
97
//
98
// Public methods for ExtendedActionListener interface.
99
//
100
//==================================================================
101

102     public void actionPerformed(MenuItemTreeView e) throws Exception JavaDoc {
103         cc_ = (ContextContainer)e.getSelectedObject();
104         
105         TreeProvider treeProvider = new DefaultTreeProvider();
106         DynamicTree tree = treeProvider.createDynamicTree(e);
107         
108         DialogBox dialog = new DefaultDialogBox("Create a new component type");
109         createBox(dialog, tree);
110         dialog.setValidateAction(this);
111         dialog.show();
112     }
113     
114     /**
115      * @see org.objectweb.util.browser.api.MenuItem#isActive(org.objectweb.util.browser.gui.common.TreeView)
116      */

117     public int getStatus(TreeView treeView) {
118         return MenuItem.ENABLED_STATUS;
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         TypeFactory typeFactory = FcBrowser.getTypeFactory(FcBrowser.getBootstrapComponent());
132         String JavaDoc name = name_.getLabel();
133         List JavaDoc l = new Vector JavaDoc();
134         Object JavaDoc[] objects = extendedTreeChooserBox_.getObjects();
135         for (int i=0 ; i < objects.length ; i++) {
136             if (objects[i] != null && objects[i] instanceof InterfaceType) {
137                 l.add((InterfaceType)objects[i]);
138             }
139         }
140         cc_.addEntry(name,typeFactory.createFcType((InterfaceType[])l.toArray(new InterfaceType[0])));
141     }
142     
143 }
Popular Tags