KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > regis > gui > widgets > NewNodePanel


1 package org.sapia.regis.gui.widgets;
2
3 import java.awt.Component JavaDoc;
4 import java.awt.FlowLayout JavaDoc;
5 import java.util.ArrayList JavaDoc;
6 import java.util.List JavaDoc;
7
8 import javax.swing.JComponent JavaDoc;
9 import javax.swing.JPanel JavaDoc;
10 import javax.swing.JTextField JavaDoc;
11
12 import org.sapia.gumby.RenderContext;
13 import org.sapia.gumby.factory.ContextAware;
14 import org.sapia.gumby.jelly.JellyHelper;
15 import org.sapia.regis.gui.GlobalContext;
16 import org.sapia.regis.gui.GuiConsts;
17 import org.sapia.regis.gui.model.NewNodeModel;
18 import org.sapia.regis.impl.NodeImpl;
19 import org.sapia.regis.impl.PropertyImpl;
20 import org.sapia.util.xml.confix.ConfigurationException;
21
22 public class NewNodePanel extends JPanel JavaDoc implements ContextAware, GuiConsts{
23   
24   private RenderContext _ctx;
25   
26   public NewNodePanel(){
27     setLayout(new FlowLayout JavaDoc(FlowLayout.LEFT));
28   }
29   
30   
31   public synchronized void fireCreateNewNodeForm(){
32     super.removeAll();
33     
34     NodeImpl impl = new NodeImpl();
35     NewNodeModel model = GlobalContext.getInstance().getModelManager().getNewNodeModel();
36     model.setNode(impl);
37     model.setParent(GlobalContext.getInstance().getModelManager().getNodeModel().getNode());
38     RenderContext child = _ctx.newChildInstance();
39     child.getEnv().put("Model", model, "local");
40     
41     try{
42       JComponent JavaDoc component = (JComponent JavaDoc)JellyHelper.render(child, child.getSettings().resolveURL("org/sapia/regis/gui/screens/newNodePane.jelly.xml"));
43       super.add(component);
44     }catch(ConfigurationException e){
45       GlobalContext.getInstance().error(e);
46     }
47     
48   }
49   
50   public synchronized void fireUpdateNewNodeForm(){
51     super.removeAll();
52
53     NewNodeModel model = GlobalContext.getInstance().getModelManager().getNewNodeModel();
54     RenderContext child = _ctx.newChildInstance();
55     child.getEnv().put("Model", model, "local");
56     
57     try{
58       JComponent JavaDoc component = (JComponent JavaDoc)JellyHelper.render(child, child.getSettings().resolveURL("org/sapia/regis/gui/screens/newNodePane.jelly.xml"));
59       super.add(component);
60       // THIS IS A HACK TO TRIGGER PROPER TAB REFRESH AFTER ADDING PROPERTY
61
JComponent JavaDoc comp = (JComponent JavaDoc)GlobalContext.getInstance().getWidget(TABBED_PANE);
62       comp.requestFocus();
63     }catch(ConfigurationException e){
64       GlobalContext.getInstance().error(e);
65     }
66   }
67   
68   public synchronized List JavaDoc getProperties(){
69     JComponent JavaDoc panel = (JComponent JavaDoc)super.getComponent(0);
70     Component JavaDoc[] comps = panel.getComponents();
71     List JavaDoc props = new ArrayList JavaDoc();
72     for(int i = 0; i < comps.length; i++){
73       if(comps[i] instanceof JTextField JavaDoc){
74         JTextField JavaDoc field = (JTextField JavaDoc)comps[i];
75         String JavaDoc value = field.getText();
76         if(value == null || value.trim().length() == 0){
77           continue;
78         }
79         PropertyImpl prop = new PropertyImpl(field.getName(), field.getText());
80         props.add(prop);
81       }
82     }
83     return props;
84   }
85   
86   public void handleContext(RenderContext context) {
87     _ctx = context;
88   }
89 }
90
Popular Tags