| AbstractVisualResource.java |
1 /*
2 * AbstractVisualResource.java
3 *
4 * Copyright (c) 1998-2005, The University of Sheffield.
5 *
6 * This file is part of GATE (see http://gate.ac.uk/), and is free
7 * software, licenced under the GNU Library General Public License,
8 * Version 2, June 1991 (in the distribution as file licence.html,
9 * and also available at http://gate.ac.uk/gate/licence.html).
10 *
11 * Cristian URSU, 24/Jan/2001
12 *
13 * $Id: AbstractVisualResource.java,v 1.15 2005/01/11 13:51:31 ian Exp $
14 */
15
16 package gate.creole;
17
18 import java.beans.BeanInfo;
19 import java.beans.Introspector;
20
21 import javax.swing.JPanel;
22
23 import gate.*;
24 import gate.gui.Handle;
25 import gate.util.Strings;
26
27 /** A convenience implementation of VisualResource with some default code. */
28 public abstract class AbstractVisualResource extends JPanel
29 implements VisualResource{
30
31 /**
32 * Package access constructor to stop normal initialisation.
33 * This kind of resources should only be created by the Factory class
34 */
35 public AbstractVisualResource(){
36 }
37
38 /** Accessor for features. */
39 public FeatureMap getFeatures(){
40 return features;
41 }//getFeatures()
42
43 /** Mutator for features*/
44 public void setFeatures(FeatureMap features){
45 this.features = features;
46 }// setFeatures()
47
48 /** Initialise this resource, and return it. */
49 public Resource init() throws ResourceInstantiationException {
50 return this;
51 }//init()
52
53 /** Does nothing now, but meant to clear all internal data **/
54 public void cleanup() {
55 this.handle = null;
56 features.clear();
57 }//clear()
58
59 /**
60 * Called by the GUI when this viewer/editor has to initialise itself for a
61 * specific object.
62 * @param target the object (be it a {@link gate.Resource},
63 * {@link gate.DataStore} or whatever) this viewer has to display
64 */
65 public void setTarget(Object target){
66 throw new RuntimeException(
67 "Class " + getClass() + " hasn't implemented the setTarget() method!");
68 }
69
70
71 /**
72 * Used by the main GUI to tell this VR what handle created it. The VRs can
73 * use this information e.g. to add items to the popup for the resource.
74 */
75 public void setHandle(Handle handle){
76 this.handle = handle;
77 }
78
79 //Parameters utility methods
80 /**
81 * Gets the value of a parameter of this resource.
82 * @param paramaterName the name of the parameter
83 * @return the current value of the parameter
84 */
85 public Object getParameterValue(String paramaterName)
86 throws ResourceInstantiationException{
87 return AbstractResource.getParameterValue(this, paramaterName);
88 }
89
90 /**
91 * Sets the value for a specified parameter.
92 *
93 * @param paramaterName the name for the parameteer
94 * @param parameterValue the value the parameter will receive
95 */
96 public void setParameterValue(String paramaterName, Object parameterValue)
97 throws ResourceInstantiationException{
98 // get the beaninfo for the resource bean, excluding data about Object
99 BeanInfo resBeanInf = null;
100 try {
101 resBeanInf = Introspector.getBeanInfo(this.getClass(), Object.class);
102 } catch(Exception e) {
103 throw new ResourceInstantiationException(
104 "Couldn't get bean info for resource " + this.getClass().getName()
105 + Strings.getNl() + "Introspector exception was: " + e
106 );
107 }
108 AbstractResource.setParameterValue(this, resBeanInf, paramaterName, parameterValue);
109 }
110
111 /**
112 * Sets the values for more parameters in one step.
113 *
114 * @param parameters a feature map that has paramete names as keys and
115 * parameter values as values.
116 */
117 public void setParameterValues(FeatureMap parameters)
118 throws ResourceInstantiationException{
119 AbstractResource.setParameterValues(this, parameters);
120 }
121
122 // Properties for the resource
123 protected FeatureMap features;
124
125 /**
126 * The handle for this visual resource
127 */
128 protected Handle handle;
129
130 }//AbstractVisualResource