Statistics
| Revision:

root / trunk / frameworks / _fwAndami / src / com / iver / andami / PluginServices.java @ 968

History | View | Annotate | Download (5.4 KB)

1
package com.iver.andami;
2

    
3
import java.awt.Component;
4
import java.awt.event.ActionListener;
5
import java.util.Iterator;
6
import java.io.File;
7
import java.util.Locale;
8
import java.util.MissingResourceException;
9
import java.util.PropertyResourceBundle;
10
import java.util.ResourceBundle;
11

    
12
import org.apache.log4j.Logger;
13

    
14
import com.iver.andami.plugins.Extension;
15
import com.iver.andami.plugins.PluginClassLoader;
16
import com.iver.andami.ui.mdiFrame.MDIFrame;
17
import com.iver.andami.ui.mdiFrame.MainFrame;
18
import com.iver.andami.ui.mdiManager.MDIManager;
19
import com.iver.utiles.XMLEntity;
20

    
21

    
22
/**
23
 * DOCUMENT ME!
24
 *
25
 * @author $author$
26
 * @version $Revision: 968 $
27
 */
28
public class PluginServices {
29
    private static Logger logger = Logger.getLogger(PluginServices.class.getName());
30
    private PluginClassLoader loader;
31
    private PropertyResourceBundle resourceBundle;
32
    private XMLEntity persistentXML;
33

    
34
    /**
35
     * Crea un nuevo PluginServices
36
     *
37
     * @param loader DOCUMENT ME!
38
     */
39
    public PluginServices(PluginClassLoader loader) {
40
        this.loader = loader;
41
    }
42

    
43
    /**
44
     * Devuelve el mensaje en el idioma del locale actual del texto
45
     * correspondiente a la clave que se pasa como par?metro
46
     *
47
     * @param key Clave del texto que se quiere obtener
48
     *
49
     * @return Texto en el idioma que toca o la propia clave si no se encuentra
50
     *         en el fichero
51
     */
52
    public String getText(String key) {
53
        if (resourceBundle == null) {
54
            return key;
55
        }
56
        if (key == null)
57
                return null;
58
        try {
59
            return resourceBundle.getString(key);
60
        } catch (MissingResourceException e) {
61
            logger.warn("No se encontr? la traducci?n para " + key);
62

    
63
            return key;
64
        }
65
    }
66

    
67
    /**
68
     * Obtiene el classloader del plugin
69
     *
70
     * @return Returns the loader.
71
     */
72
    public PluginClassLoader getClassLoader() {
73
        return loader;
74
    }
75

    
76
    /**
77
     * Obtiene el nombre del plugin
78
     *
79
     * @return DOCUMENT ME!
80
     */
81
    String getPluginName() {
82
        return loader.getPluginName();
83
    }
84

    
85
    /**
86
     * DOCUMENT ME!
87
     *
88
     * @param name
89
     * @param locale
90
     */
91
    void setResourceBundle(String name, Locale locale) {
92
            try{
93
            resourceBundle = (PropertyResourceBundle) ResourceBundle.getBundle(name, locale, loader);
94
            }catch (MissingResourceException e) {
95
                    logger.error("No se encontr? el recurso de traducciones " + name, e);
96
                }
97
    }
98

    
99
    /**
100
     * Obtienen una referencia al PluginServices del plugin cuyo nombre se pasa
101
     * como par?metro
102
     *
103
     * @param pluginClassInstance Instancia de una clase propia del plugin a cuyos
104
     * servicios se quiere acceder
105
     *
106
     * @return DOCUMENT ME!
107
     */
108
    public static PluginServices getPluginServices(Object pluginClassInstance) {
109
            try{
110
                    PluginClassLoader loader = (PluginClassLoader) pluginClassInstance.getClass().getClassLoader();
111
                    return Launcher.getPluginServices(loader.getPluginName());
112
            }catch (ClassCastException e) {
113
                    throw new RuntimeException("Parameter is not a plugin class instance");
114
                }
115
    }
116

    
117
    /**
118
     * Obtienen una referencia al PluginServices del plugin cuyo nombre se pasa
119
     * como par?metro
120
     *
121
     * @param pluginClassInstance Instancia de una clase propia del plugin a cuyos
122
     * servicios se quiere acceder
123
     *
124
     * @return DOCUMENT ME!
125
     */
126
    public static PluginServices getPluginServices(String pluginName) {
127
                   return Launcher.getPluginServices(pluginName);
128
    }
129

    
130
    /**
131
     * Obtiene una referencia al gestor de ventanas
132
     *
133
     * @return DOCUMENT ME!
134
     */
135
    public static MDIManager getMDIManager() {
136
        return Launcher.getFrame().getMDIManager();
137
    }
138
    
139
    public static MainFrame getMainFrame() {
140
            return Launcher.getFrame();
141
    }
142
    
143
    public static Extension getExtension(Class extensionClass){
144
            return (Extension) Launcher.getClassesExtensions().get(extensionClass);
145
    }
146
    public static Iterator getExtensions(){
147
            return Launcher.getClassesExtensions().values().iterator();
148
    }
149

    
150
    public static String getText(Object pluginObject, String key){
151
            try 
152
                {
153
                    PluginServices ps = getPluginServices(pluginObject);                
154
                    return ps.getText(key);
155
                }
156
            catch(RuntimeException e)
157
                {
158
                    logger.error(e);
159
                    return key;                    
160
                }
161
    }
162
    
163
    /**
164
     * Establece los datos del plugin que deber?n persistir entre ejecuciones
165
     * en formato xml
166
     *
167
     * @param entity DOCUMENT ME!
168
     */
169
    public void setPresistentXML(XMLEntity entity) {
170
        persistentXML = entity;
171
    }
172

    
173
    /**
174
     * Obtiene un objeto que representa la persistencia del plugin en formato
175
     * xml
176
     *
177
     * @return DOCUMENT ME!
178
     */
179
    public XMLEntity getPersistentXML() {
180
        return persistentXML;
181
    }
182

    
183
    /**
184
     * DOCUMENT ME!
185
     *
186
     * @param name DOCUMENT ME!
187
     * @param c DOCUMENT ME!
188
     * @param listener DOCUMENT ME!
189
     *
190
     * @throws RuntimeException DOCUMENT ME!
191
     */
192
    public void addPopupMenuListener(String name, Component c,
193
        ActionListener listener) {
194
        MDIFrame frame = Launcher.getFrame();
195

    
196
        if (frame == null) {
197
            throw new RuntimeException("MDIFrame not loaded yet");
198
        }
199

    
200
        frame.addPopupMenuListener(name, c, listener, loader);
201
    }
202
    
203
    public File getPluginDirectory(){
204
            return new File(Launcher.getPluginsDir() + File.separator + getPluginName());
205
    }
206
}