Skip to main content
summaryrefslogtreecommitdiffstats
blob: 43e10584d4bb5cdb66aecda7049cb4482e3a58ab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
/*******************************************************************************
 * Copyright (c) 2004 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.wst.ws.internal.explorer.plugin;

import java.net.MalformedURLException;
import java.net.URL;
import java.text.MessageFormat;
import java.util.Hashtable;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.wst.ws.internal.explorer.LaunchWizardTask;
import org.eclipse.wst.ws.internal.explorer.favorites.FavoritesRegistryTypeDefault;
import org.osgi.framework.BundleContext;


/**
 * This is the plugin class for the Web Services Explorer.
 */
public class ExplorerPlugin extends AbstractUIPlugin
{
  /**
   * The identifier of the descriptor of this plugin in plugin.xml.
   */
  public static final String ID = "org.eclipse.wst.ws.explorer";
  public static final String CHARSET = "UTF-8";
  /**
   * The reference to the singleton instance of this plugin.
   */
  private static ExplorerPlugin instance_;

  /**
   * Constructs a runtime plugin object for this plugin. The "plugin" element
   * in plugin.xml should include the attribute class =
   * "org.eclipse.wst.ws.internal.explorer.plugin.ExplorerPlugin".
   * 
   * @param descriptor
   *            The descriptor of this plugin.
   */
  public ExplorerPlugin()
  {
    super();
    instance_ = this;
  }

  /**
   * Returns the singleton instance of this plugin. Equivalent to calling
   * (ExplorerPlugin)Platform.getPlugin("org.eclipse.wst.ws.explorer");
   * 
   * @return The ExplorerPlugin singleton.
   */
  static public ExplorerPlugin getInstance()
  {
    return instance_;
  }

  /**
   * Called once by the platform when this plugin is first loaded.
   */
  public void start(BundleContext bundle) throws Exception
  {
    super.start(bundle);
    // init the shell of LaunchWizardTask
    LaunchWizardTask.getInstance();
  }

  /**
   * Called once by the platform when this plugin is unloaded.
   */
  public void stop(BundleContext bundle) throws Exception
  {
    super.stop(bundle);
  }

  /**
   * Returns the message string identified by the given key from the
   * plugin.properties file for the appropriate locale.
   * 
   * @param key
   *            The message key string prefixed by a "%" symbol. That is, the
   *            string passed in must be of the form "%KEY" where the
   *            plugin.properties file contains a line of the form: "KEY =
   *            value".
   * @return The locale-specific message.
   */
  public static String getMessage(String key)
  {
    return Platform.getResourceString(instance_.getBundle(), key); 
  }

  /**
   * Returns the message string identified by the given key from the
   * plugin.properties file for the appropriate locale. Substitution sequences
   * in the message string are replaced by the given array of substitution
   * objects (which are most frequently strings). See java.text.MessageFormat
   * for further details on substitution.
   * 
   * @param key
   *            The message key string prefixed by a "%" symbol. That is, the
   *            string passed in must be of the form "%KEY" where the
   *            plugin.properties file contains a line of the form: "KEY =
   *            value".
   * @param args
   *            The substitution values for the message as required by the
   *            message in plugin.properties and by the rules of class
   *            java.text.MessageFormat.
   * @return The locale-specific message.
   */
  public static String getMessage(String key, Object[] args)
  {
    return MessageFormat.format(getMessage(key), args);
  }

  /**
   * Returns an image descriptor for the named resource as relative to the
   * plugin install location.
   * 
   * @return An image descriptor, possibly null.
   */
  public static ImageDescriptor getImageDescriptor(String name)
  {
    try
    {
      URL installURL = instance_.getBundle().getEntry("/");
      URL imageURL = new URL(installURL, name);
      return ImageDescriptor.createFromURL(imageURL);
    }
    catch (MalformedURLException e)
    {
      return null;
    }
  }

  /**
   * See IPluginHelper.
   */
  public void setMsgLoggerConfig(Hashtable msgLoggerConfig)
  {
  }

  /**
   * See IPluginHelper.
   */
  public Hashtable getMsgLoggerConfig(Plugin plugin)
  {
    return new Hashtable();
  }

  /**
   * See IPluginHelper.
   */
  public Hashtable getMsgLoggerConfig()
  {
    return getMsgLoggerConfig(this);
  }

  public String getPluginStateLocation()
  {
    return Platform.getPluginStateLocation(this).addTrailingSeparator().toOSString();
  }

  public String getDefaultFavoritesLocation()
  {
	// TODO: getPluginInstallLocation can return null and cause trouble for the WSE's favourites mechanism. 89101 should correct this.
	return getPluginInstallLocation()+FavoritesRegistryTypeDefault.FAVORITES_DEFAULT;
  }
  
  public String getPluginInstallLocation()
  {
    try
    {
      return Platform.resolve(instance_.getBundle().getEntry("/")).getFile();
    }
    catch (Exception e)
    {
      return null;
    }
  }
}

Back to the top