View Javadoc

1   /*
2    * @(#)$Id: GestureClassPanel.java 798 2010-05-04 15:04:37Z bpuype $
3    *
4    * Author   : Ueli Kurmann, igesture@uelikurmann.ch
5    *                                   
6    *                                   
7    * Purpose  : 
8    *
9    * -----------------------------------------------------------------------
10   *
11   * Revision Information:
12   *
13   * Date       Who     Reason
14   *
15   * 23.03.2008 ukurmann  Initial Release
16   *
17   * -----------------------------------------------------------------------
18   *
19   * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
20   *
21   * This software is the proprietary information of ETH Zurich.
22   * Use is subject to license terms.
23   * 
24   */
25  
26  package org.ximtec.igesture.tool.view.admin.panel;
27  
28  import java.awt.BorderLayout;
29  import java.awt.Color;
30  import java.util.List;
31  
32  import javax.swing.BorderFactory;
33  import javax.swing.ImageIcon;
34  import javax.swing.JLabel;
35  import javax.swing.JPanel;
36  import javax.swing.JTextField;
37  
38  import org.sigtec.ink.Note;
39  import org.ximtec.igesture.core.Descriptor;
40  import org.ximtec.igesture.core.Gesture;
41  import org.ximtec.igesture.core.GestureClass;
42  import org.ximtec.igesture.core.SampleDescriptor;
43  import org.ximtec.igesture.core.SampleDescriptor3D;
44  import org.ximtec.igesture.core.composite.CompositeDescriptor;
45  import org.ximtec.igesture.core.composite.Constraint;
46  import org.ximtec.igesture.tool.GestureConstants;
47  import org.ximtec.igesture.tool.binding.BindingFactory;
48  import org.ximtec.igesture.tool.core.Controller;
49  import org.ximtec.igesture.tool.util.ComponentFactory;
50  import org.ximtec.igesture.tool.util.FormBuilder;
51  import org.ximtec.igesture.tool.util.TitleFactory;
52  import org.ximtec.igesture.tool.view.AbstractPanel;
53  import org.ximtec.igesture.util.GestureTool;
54  import org.ximtec.igesture.util.additions3d.RecordedGesture3D;
55  
56  public class GestureClassPanel extends AbstractPanel {
57    
58    private GestureClass gestureClass;
59  
60    public GestureClassPanel(Controller controller, GestureClass gestureClass) {
61      super(controller);
62      
63      this.gestureClass = gestureClass;
64      
65      setTitle(TitleFactory.createDynamicTitle(gestureClass,
66          GestureClass.PROPERTY_NAME));
67  
68      JPanel panel = createHeaderPanel();
69      
70      JPanel basePanel = ComponentFactory.createBorderLayoutPanel();
71      basePanel.add(panel, BorderLayout.NORTH);
72  
73      setContent(basePanel);
74  
75    }
76    
77  
78  
79    private JPanel createHeaderPanel(){
80      
81      FormBuilder formBuilder = new FormBuilder();
82      
83      JLabel labelName = getComponentFactory().createLabel(GestureConstants.GESTURE_CLASS_PANEL_NAME);
84      formBuilder.addLeft(labelName);
85      
86      JTextField textField = new JTextField();
87  
88      BindingFactory.createInstance(textField, gestureClass, GestureClass.PROPERTY_NAME);
89      formBuilder.addRight(textField);
90      
91      formBuilder.nextLine();
92     
93      JLabel labelNod = getComponentFactory().createLabel(GestureConstants.GESTURE_CLASS_PANEL_NOD);
94      JLabel labelNodValue = new JLabel(Integer.toString(gestureClass.getDescriptors().size()));
95      
96      formBuilder.addLeft(labelNod);
97      formBuilder.addRight(labelNodValue);
98      
99      formBuilder.nextLine();
100     
101     for (Descriptor descriptor : gestureClass.getDescriptors()) {
102       JLabel labelDescriptorName = getComponentFactory().createLabel(GestureConstants.GESTURE_CLASS_PANEL_DESCRIPTOR_NAME);
103       JLabel labelDescriptorNameValue = new JLabel(descriptor.getType().getName());
104       
105       formBuilder.addLeft(labelDescriptorName);
106       formBuilder.addRight(labelDescriptorNameValue);
107 
108       formBuilder.nextLine();
109     }
110     
111     if (gestureClass.hasDescriptor(SampleDescriptor.class)) {
112       Gesture<Note> sample = null;
113       
114       SampleDescriptor descriptor = gestureClass.getDescriptor(SampleDescriptor.class);
115       List<Gesture<Note>> samples = descriptor.getSamples();
116       
117       if (samples.size() > 0) {
118         sample = descriptor.getSample(0);
119       }
120       
121       if (sample != null) {
122         JLabel label = new JLabel(new ImageIcon(GestureTool.createNoteImage(
123             sample.getGesture(), 150, 150)));
124         label.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1));
125         formBuilder.addRight(label);
126       } else {
127         formBuilder.addRight(getComponentFactory().createLabel(
128             GestureConstants.GESTURE_CLASS_PANEL_NSA));
129       }
130     }
131     else if(gestureClass.hasDescriptor(SampleDescriptor3D.class))
132     {
133     	Gesture<RecordedGesture3D> sample = null;
134     	
135     	SampleDescriptor3D descriptor = gestureClass.getDescriptor(SampleDescriptor3D.class);
136     	List<Gesture<RecordedGesture3D>> samples = descriptor.getSamples();
137     	
138     	if(samples.size() > 0)
139     		sample = descriptor.getSample(0);
140     	
141     	if(sample != null)
142     	{
143     		JLabel label = new JLabel(new ImageIcon(GestureTool.createRecordedGesture3DImage(
144     	            sample.getGesture(), 150, 150)));
145     	        label.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1));
146     	        formBuilder.addRight(label);
147     	}
148     	else
149     	{
150     		formBuilder.addRight(getComponentFactory().createLabel(
151     	            GestureConstants.GESTURE_CLASS_PANEL_NSA));
152     	}
153     }
154     else if(gestureClass.hasDescriptor(CompositeDescriptor.class))
155     {
156     	Constraint constraint = null;
157     	
158     	CompositeDescriptor descriptor = gestureClass.getDescriptor(CompositeDescriptor.class);
159     	constraint = descriptor.getConstraint();
160     	
161     	if(constraint != null)
162     	{
163     		JLabel label = new JLabel(new ImageIcon(GestureTool.createCompositeImage(constraint,150,150)));
164     		label.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1));
165     		formBuilder.addRight(label);
166     	}
167     	else
168     	{
169     		formBuilder.addRight(getComponentFactory().createLabel(
170     	            GestureConstants.GESTURE_CLASS_PANEL_NCA));
171     	}
172     		
173     	
174     }
175 
176     return formBuilder.getPanel();
177   }
178 
179   @Override
180   protected void refreshUILogic() {
181     // TODO Auto-generated method stub
182     
183   }
184   
185   
186 
187 }