diff options
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.common.ui/src')
76 files changed, 0 insertions, 18048 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/CommonResources.properties b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/CommonResources.properties deleted file mode 100644 index b9527d13f..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/CommonResources.properties +++ /dev/null @@ -1,113 +0,0 @@ -############################################################################### -# Copyright (c) 2001, 2007 Oracle 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: -# Oracle Corporation - initial API and implementation -############################################################################### -#################################################### -# Generic Strings for UI -#################################################### - -pluginName=Web Application Development Common -button.save=&Save -button.remove=&Remove - -#################################################### -# Resource message for Logging -#################################################### - -log.msg={0} - -log.ResourceUtils=Missing Resource Bundle "{0}". -log.CommonPlugin=Web Application Development Common Plugin initialized on eclipse version {0}. -log.FavoriteConfigurations.save.error=Failed to save {0} favorites. File={1} -log.FavoriteConfigurations.read.error=Failed to read {0} favorites. File={1} -log.CommonPlugin.image.error=Image {0} not found. - -log.IntroductionSection.action.error = Failed to launch the link {0} - -#################################################### -# Resource message for Alerts -#################################################### - -alert.msg={0} - -#################################################### -# Resource messages for FavoriteSection -#################################################### -favorites.group.label=Favorite Configurations -favorites.label=&Name: -favorites.tooltip=Construct common setting favorites for this page. -favorites.save.tooltip=Save the current options on this page as the favorites. -favorites.remove.tooltip=Remove the current favorite. -favorites.default=default - -#################################################### -# Resource messages for Preference Pages -#################################################### -JMTPreferencePage.Description=Expand the tree to edit Web Application preferences. - -LoggingPreferencePage.Log.Level.label=Log Level: -LoggingPreferencePage.Log.Level.tooltip=Select the logging level to output to the selected source. -LoggingPreferencePage.Log.Level.debug=Debug -LoggingPreferencePage.Log.Level.info=Info -LoggingPreferencePage.Log.Level.warn=Warn -LoggingPreferencePage.Log.Level.error=Error -LoggingPreferencePage.Log.Level.fatal=Fatal -LoggingPreferencePage.Console.Group.label=Console -LoggingPreferencePage.Console.Logging.label=Enable &Console Logging -LoggingPreferencePage.Console.Logging.tooltip=Receive log message in the Eclipse Console view. -LoggingPreferencePage.Eclipse.Group.label=Eclipse -LoggingPreferencePage.Eclipse.Logging.label=Enable &Eclipse Logging -LoggingPreferencePage.Eclipse.Logging.tooltip=Receive log message in the Eclipse Error Log view. -LoggingPreferencePage.File.Group.label=File -LoggingPreferencePage.File.Logging.label=Enable &File Logging -LoggingPreferencePage.File.Logging.tooltip=Write log message to an external file. -LoggingPreferencePage.File.clearing.label=Clear log file on &startup -LoggingPreferencePage.File.clearing.tooltip=Each time Eclipse starts, clear the log file. -LoggingPreferencePage.File.path.label=&Log file: -LoggingPreferencePage.File.path.tooltip=Where should the log file go? Partial paths are \n based from: /workspace/.metadata/.plugins/org.eclipse.jst.jsf.common.ui.internal/. -LoggingPreferencePage.File.button.label=B&rowse -LoggingPreferencePage.File.button.tooltip=Select a location and file name for file logging. -LoggingPreferencePage.File.select.label=Select a log file -LoggingPreferencePage.File.Rollover.Frequency.label=Rollover Fre&quency: -LoggingPreferencePage.File.Rollover.Frequency.tooltip=Select the frequency of how often to generate a new log file. \n The original log file is appended with a timestamp. -LoggingPreferencePage.File.Rollover.Frequency.daily=Daily -LoggingPreferencePage.File.Rollover.Frequency.weekly=Weekly -LoggingPreferencePage.File.Rollover.Frequency.monthly=Monthly - -#################################################### -# Resource messages for BrowserWindow -#################################################### -BrowserWindow.back.tooltip=Navigate back in the browser -BrowserWindow.forward.tooltip=Navigate forward in the browser -BrowserWindow.stop.tooltip=Stop browser navigation -BrowserWindow.refresh.tooltip=Refresh the browser -BrowserWindow.reload.tooltip=Reload the browser - -#################################################### -# Resource messages for Commmon DialogField -#################################################### -DialogField.JavaClassWizard.NewClass=New Java Class -DialogField.ClassButton.SelectType=Select Type -DialogField.Browse=Browse... -DialogField.ResourceButton.SelectFile=Select File - -#################################################### -# Resource messages for Commmon Dialog -#################################################### -Dialog.ResourceOnClasspathDialog.StatusMessage=Select a properties file -Dialog.CommonResourceDialog.StatusMessage0=Select -Dialog.TreeViewerSelectionDialog.DefaultTitle=Select a File - -Wizards.NewPage.Error.InvalidProject=Invalid Web project. -Error.FileFilter.title=File selection -Error.ImgFileFilter.error=File selection error: -Error.ProjectFileDialogContentProvider=Project file dialog error: {0} -Error.RefreshingLocal=Refreshing local - -Service.NoResourceError=Unable to determine Service Model file. diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/IFileFolderConstants.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/IFileFolderConstants.java deleted file mode 100644 index e74e90a91..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/IFileFolderConstants.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui; - -/** - * @author mengbo - * @version 1.5 - */ -public interface IFileFolderConstants { - - /** - * the dot character - */ - public static final String DOT = "."; //$NON-NLS-1$ - - /** - * the path separator - */ - public static final String PATH_SEPARATOR = "/"; //$NON-NLS-1$ - - /** file extensions */ - /** - * class file extension - */ - public static final String EXT_CLASS = "class"; //$NON-NLS-1$ - - /** - * jar file extension - */ - public static final String EXT_JAR = "jar"; //$NON-NLS-1$ - - /** - * java file extension - */ - public static final String EXT_JAVA = "java"; //$NON-NLS-1$ - - - /** - * jsp file extension - */ - public static final String EXT_JSP = "jsp"; //$NON-NLS-1$ - - /** - * properties file extension - */ - public static final String EXT_PROPERTIES = "properties"; //$NON-NLS-1$ - - /** - * taglib file extension - */ - public static final String EXT_TAGLIB = "tld"; //$NON-NLS-1$ - - /** - * standard web.xml file name - */ - public static final String FILE_WEB_XML = "web.xml"; //$NON-NLS-1$ - - /** folders */ - - /** - * classes folder name - */ - public static final String FOLDER_CLASS = "classes"; //$NON-NLS-1$ - - /** - * icons folder name - */ - public static final String FOLDER_ICONS = "icons"; //$NON-NLS-1$ - - /** - * the meta-inf folder name - */ - public static final String FOLDER_METAINF = "META-INF"; //$NON-NLS-1$ - - /** - * the src folder name - */ - public static final String FOLDER_SOURCE = "src"; //$NON-NLS-1$ - - /** - * the web-inf folder name - */ - public static final String FOLDER_WEBINF = "WEB-INF"; //$NON-NLS-1$ - - /** the webroot folder depth relative to the project */ - public static final int WEBROOT_FOLDER_DEPTH = 2; -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/JSFUICommonPlugin.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/JSFUICommonPlugin.java deleted file mode 100644 index b4a1f0075..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/JSFUICommonPlugin.java +++ /dev/null @@ -1,418 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui; - -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.MissingResourceException; -import java.util.Properties; -import java.util.ResourceBundle; - -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jst.jsf.common.ui.internal.guiutils.Alerts; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.osgi.framework.BundleContext; -import org.osgi.framework.Version; - -/** - * The main plugin class to be used in the desktop. - */ -public class JSFUICommonPlugin extends AbstractUIPlugin { - // Properties contains general properties and defaults to preferences. - private static final String PROPERTIES = "default.properties"; //$NON-NLS-1$ - // preferences will - // contain this string - // in the key. - - private static final String P_CONSOLE_LOGGING = "console.logging.on"; //$NON-NLS-1$ - - private static final String P_CONSOLE_LOG_LEVEL = "console.logging.max.level"; //$NON-NLS-1$ - - private static final String P_ECLIPSE_LOGGING = "eclipse.logging.on"; //$NON-NLS-1$ - - private static final String P_ECLIPSE_LOG_LEVEL = "eclipse.logging.max.level"; //$NON-NLS-1$ - - private static final String P_FILE_LOGGING = "file.logging.on"; //$NON-NLS-1$ - - private static final String P_FILE_LOG_LEVEL = "file.logging.max.level"; //$NON-NLS-1$ - - private static final String P_FILE_PATH = "file.logging.path"; //$NON-NLS-1$ - - private static final String P_FILE_CLEAR = "file.logging.startup.clear"; //$NON-NLS-1$ - - private static final String P_FILE_ROLLOVER_FREQUENCY = "file.logging.rollover.frequency"; //$NON-NLS-1$ - - private static final int DEBUG_LEVEL = 0; - - private static final int INFO_LEVEL = 1; - - private static final int WARN_LEVEL = 2; - - private static final int ERROR_LEVEL = 3; - - private static final int FATAL_LEVEL = 4; - - // What version of the platform are we on. - private static boolean TWO_DOT_ONE; - - private static boolean THREE_DOT; - - private static String _version; - - // The shared instance. - private static JSFUICommonPlugin _plugin; - - private Logger _log; - - private ResourceBundle _resourceBundle; - - private Properties _properties; - - private URL _pluginBase; - - private static Alerts _alerts; - - /** - * The constructor. - */ - public JSFUICommonPlugin() { - super(); - _plugin = this; - versionCheck(); - } - - private void versionCheck() { - String version = (String) ResourcesPlugin.getPlugin().getBundle() - .getHeaders().get(org.osgi.framework.Constants.BUNDLE_VERSION); - Version identifier = new Version(version); - - TWO_DOT_ONE = ((identifier.getMajor() == 2) && (identifier - .getMinor() == 1)); - THREE_DOT = (identifier.getMajor() == 3); - _version = identifier.toString(); - } - - /** - * This method is called upon plug-in activation - */ - public void start(BundleContext context) throws Exception { - super.start(context); - - // This plugin is for 3.0 only, do a version check. - if (isThreeDot() == false) { - throw new CoreException(new Status(IStatus.ERROR, getBundle() - .getSymbolicName(), IStatus.OK, - "Requires eclipse version 3.x", null)); //$NON-NLS-1$ - } - - try { - // get resource bundle. - _resourceBundle = ResourceBundle - .getBundle("org.eclipse.jst.jsf.common.ui.CommonResources"); //$NON-NLS-1$ - _alerts = new Alerts(this, _resourceBundle); - - // get properties. - _properties = new Properties(); - InputStream input = null; - _pluginBase = getBundle().getEntry("/"); //$NON-NLS-1$ - try { - input = (new URL(_pluginBase, PROPERTIES)).openStream(); - _properties.load(input); - } finally { - try { - input.close(); - } catch (IOException ee)// NOPMD - { - // nothing to do when IOException throwed in closing files. - } - } - - // set up logging for this plugin and everthing under it. - _log = new Logger(this.getBundle(), _resourceBundle); - - // NOTE: add in any other plugin code statup HERE!!!! - - // log.CommonPlugin=Web Application Development Common Plugin - // initialized on eclipse version {0}. - - // log.info("log.CommonPlugin", version); - - } catch (Exception ee) { - // only log if the logger was configured correctly. - if (_log != null) { - _log - .error( - "log.msg", //$NON-NLS-1$ - "Problems starting plug-in Web Application Development Common.", //$NON-NLS-1$ - ee); - } - - throw new CoreException( - new Status( - IStatus.ERROR, - getBundle().getSymbolicName(), - IStatus.OK, - "Problems starting plug-in Web Application Development Common", //$NON-NLS-1$ - ee)); - } - } - - /** - * Returns the shared instance. - * @return the plugin instance - */ - public static JSFUICommonPlugin getDefault() { - return _plugin; - } - - /** - * get the alerts objects associated with this plugin for alerting the user. - * - * @return the alerts object - */ - public static Alerts getAlerts() { - return _alerts; - } - - /** - * Returns a logger for the new class using this plugin for reference. - * @param theClass - * @return the logger - */ - // TODO: theClass is never used!! - public static Logger getLogger(Class theClass) { - return getDefault().getRootLogger(); - } - - /** - * Returns the plugin's root logger - * @return the root logger - */ - public Logger getRootLogger() { - return _log; - } - - /** - * Returns this plugin's unique identifier - * - * @return this plugin's unique identifier - * - */ - public static String getPluginId() { - return getDefault().getBundle().getSymbolicName(); - } - - /** - * Returns the plugin's resource bundle, - * @return the resource bundle - */ - public ResourceBundle getResourceBundle() { - return _resourceBundle; - } - - /** - * Returns the string from the plugin's resource bundle, or 'key' if not - * found. - * @param key - * @return the resource string - */ - public static String getResourceString(String key) { - ResourceBundle bundle = JSFUICommonPlugin.getDefault().getResourceBundle(); - try { - return (bundle != null) ? bundle.getString(key) : key; - } catch (MissingResourceException e) { - return key; - } - } - - /** - * Returns the plugin's descriptor's resource bundle, - * @return the bundle - */ - public ResourceBundle getPluginDecriptorBundle() { - return Platform.getResourceBundle(getDefault().getBundle()); - } - - /** - * Returns the plugin's default properties. These are normally used for - * default preferences. - * @return the properties - */ - public Properties getProperties() { - return _properties; - } - - /** - * Returns a shared image for the given name - * <p> - * Note: Images returned from this method will be automitically disposed of - * when this plug-in shuts down. Callers must not dispose of these images - * themselves. - * </p> - * - * @param name - * the image name found in /icons (with extension) - * @return the image, null on error or not found. - */ - public Image getImage(String name) { - if (name == null) { - return null; - } - - ImageRegistry images = getImageRegistry(); - Image image = images.get(name); - if (image == null) { - try { - ImageDescriptor id = ImageDescriptor.createFromURL(new URL( - _pluginBase, "icons/" + name)); //$NON-NLS-1$ - images.put(name, id); - - image = images.get(name); - } catch (MalformedURLException ee) { - // log.CommonPlugin.image.error=Image {0} not found. - _log.error("log.msg", "log.CommonPlugin.image.error", name, ee); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - return image; - } - - /** - * Returns a shared ImageDescriptor for the given name - * <p> - * Note: ImageDescriptor returned from this method will be automitically - * disposed of when this plug-in shuts down. Callers must not dispose of - * these ImageDescriptor themselves. - * </p> - * - * @param name - * the ImageDescriptor name found in /icons (with extension) - * @return the ImageDescriptor, null on error or not found. - */ - public ImageDescriptor getImageDescriptor(String name) { - if (name == null) { - return null; - } - - ImageRegistry images = getImageRegistry(); - ImageDescriptor id = images.getDescriptor(name); - if (id == null) { - try { - id = ImageDescriptor.createFromURL(new URL(_pluginBase, - "icons/" + name)); //$NON-NLS-1$ - images.put(name, id); - } catch (MalformedURLException ee) { - // log.CommonPlugin.image.error=Image {0} not found. - _log.error("log.msg", "log.CommonPlugin.image.error", name, ee); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - return id; - } - - /** - * Is this eclipse version 2.1 - * - * @return true if version is 2.1 - */ - public static boolean isTwoDotOne() { - return TWO_DOT_ONE; - } - - /** - * Is this eclipse version 3.x - * - * @return true if version is 3.x - */ - public static boolean isThreeDot() { - return THREE_DOT; - } - - /** - * get the eclipse version - * - * @return version string. - */ - public static String getVersion() { - return _version; - } - - - - /** - * Initializes the preference controls to the default values. These values - * are used the first time the preference page is displayed or when the user - * presses the Defaults button in the preferences page. - */ - protected void initializeDefaultPreferences(IPreferenceStore store) { - // NOTE: no logging can happen here since we haven't initialized logging - // yet because it - // depends on preferences!!!! - - store.setDefault(P_CONSOLE_LOGGING, _properties.getProperty( - P_CONSOLE_LOGGING, Boolean.TRUE.toString())); - store.setDefault(P_CONSOLE_LOG_LEVEL, strToIntLogLevel(_properties - .getProperty(P_CONSOLE_LOG_LEVEL, "ERROR"))); //$NON-NLS-1$ - - store.setDefault(P_ECLIPSE_LOGGING, _properties.getProperty( - P_ECLIPSE_LOGGING, Boolean.TRUE.toString())); - store.setDefault(P_ECLIPSE_LOG_LEVEL, strToIntLogLevel(_properties - .getProperty(P_ECLIPSE_LOG_LEVEL, "ERROR"))); //$NON-NLS-1$ - - store.setDefault(P_FILE_LOGGING, _properties.getProperty( - P_FILE_LOGGING, Boolean.FALSE.toString())); - store.setDefault(P_FILE_LOG_LEVEL, strToIntLogLevel(_properties - .getProperty(P_FILE_LOG_LEVEL, "ERROR"))); //$NON-NLS-1$ - store.setDefault(P_FILE_PATH, _properties.getProperty(P_FILE_PATH, "")); //$NON-NLS-1$ - store.setDefault(P_FILE_CLEAR, _properties.getProperty(P_FILE_CLEAR, - Boolean.TRUE.toString())); - store.setDefault(P_FILE_ROLLOVER_FREQUENCY, _properties.getProperty( - P_FILE_ROLLOVER_FREQUENCY, "DAILY")); //$NON-NLS-1$ - } - - /** - * Converts the log level from string to int. The level defaults to - * ERROR_LEVEL. - * - * @param str - * String representation of log level - * @return integer representation of log level - */ - private int strToIntLogLevel(String str) { - if (str == null) { - return ERROR_LEVEL; - } - if (str.equalsIgnoreCase("DEBUG")) { //$NON-NLS-1$ - return DEBUG_LEVEL; - } - if (str.equalsIgnoreCase("INFO")) { //$NON-NLS-1$ - return INFO_LEVEL; - } - if (str.equalsIgnoreCase("WARN")) { //$NON-NLS-1$ - return WARN_LEVEL; - } - if (str.equalsIgnoreCase("FATAL")) { //$NON-NLS-1$ - return FATAL_LEVEL; - } - return ERROR_LEVEL; - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/IOpenPage.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/IOpenPage.java deleted file mode 100644 index 8456083ed..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/IOpenPage.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.actions; - -/** - * Editors should implement this if they can handle reseting to a page based on - * the class defined for that page. - * - * @author collinsc,jchoi - */ -public interface IOpenPage { - /** - * Sets the currently active page from the id of the page. - * - * @param pageID - */ - public void setActiveEditorPage(String pageID); - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadCheatSheetAction.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadCheatSheetAction.java deleted file mode 100644 index de7406f7c..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadCheatSheetAction.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.actions; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.jface.action.Action; -import org.eclipse.ui.cheatsheets.OpenCheatSheetAction; - -/** - * This class is used to open the cheat sheet based on the configuration - * parameter. - * - * @author mengbo - */ -public class LoadCheatSheetAction extends Action implements - IExecutableExtension { - private String _cheatSheetName = null; - - /** - * - */ - public LoadCheatSheetAction() { - super(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.action.IAction#run() - */ - public void run() { - if (_cheatSheetName != null) { - OpenCheatSheetAction action = new OpenCheatSheetAction( - _cheatSheetName); - action.run(); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, - * java.lang.String, java.lang.Object) - */ - public void setInitializationData(IConfigurationElement config, - String propertyName, Object data) throws CoreException { - _cheatSheetName = config.getAttribute("actionparameters"); //$NON-NLS-1$ - } - - /** - * set the cheatSheetName name to open. - * - * @param cheatSheetName - */ - public void setCheatSheetName(String cheatSheetName) { - _cheatSheetName = cheatSheetName; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadHelpAction.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadHelpAction.java deleted file mode 100644 index 18b927d2b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/LoadHelpAction.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.actions; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.help.HelpSystem; -import org.eclipse.help.IContext; -import org.eclipse.help.IHelpResource; -import org.eclipse.jface.action.Action; -import org.eclipse.ui.PlatformUI; - -/** - * This class is used to open the help page for a configuration param. - * - * @author mengbo - */ -public class LoadHelpAction extends Action implements IExecutableExtension { - private String _helpContextId = null; - - /** - * - */ - public LoadHelpAction() { - super(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.action.IAction#run() - */ - public void run() { - IContext context = HelpSystem.getContext(_helpContextId); - if (context != null) { - IHelpResource[] topics = context.getRelatedTopics(); - if (topics != null && topics.length == 1) { - PlatformUI.getWorkbench().getHelpSystem().displayHelpResource( - topics[0].getHref()); - } else { - PlatformUI.getWorkbench().getHelpSystem().displayHelp( - _helpContextId); - } - } - - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, - * java.lang.String, java.lang.Object) - */ - public void setInitializationData(IConfigurationElement config, - String propertyName, Object data) throws CoreException { - _helpContextId = config.getAttribute("actionparameters"); //$NON-NLS-1$ - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/OpenPageAction.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/OpenPageAction.java deleted file mode 100644 index 252e44caf..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/actions/OpenPageAction.java +++ /dev/null @@ -1,118 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.actions; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.ui.IEditorPart; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.forms.editor.FormEditor; - -/** - * This class is used to open a page in the editor based on the configuration - * parameter. - * - * @author collinsc,jchoi - */ -public class OpenPageAction extends Action implements IExecutableExtension { - private String pageID = null; - - private ISelection selection; - - /** - * - */ - public OpenPageAction() { - super(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.action.IAction#run() - */ - public void run() { - if (pageID != null) { - // get the active editor - IEditorPart editor = getActiveEditor(); - IOpenPage openPage = (IOpenPage)editor.getAdapter(IOpenPage.class); - if(openPage != null){ - openPage.setActiveEditorPage(pageID); - if (selection != null && editor instanceof FormEditor) { - IEditorPart activePage = ((FormEditor) editor) - .getActiveEditor(); - if (activePage instanceof ISelectionProvider) { - ((ISelectionProvider) activePage) - .setSelection(selection); - } - } - } - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, - * java.lang.String, java.lang.Object) - */ - public void setInitializationData(IConfigurationElement config, - String propertyName, Object data) throws CoreException { - pageID = config.getAttribute("actionparameters"); //$NON-NLS-1$ - } - - /** - * set the class name to open. - * @param className - */ - public void setPageName(String className) { - this.pageID = className; - } - - /** - * get the current active editor - * - * @return the active editor part - */ - public static IEditorPart getActiveEditor() { - IEditorPart editor = null; - IWorkbenchWindow win = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow(); - if (win != null) { - IWorkbenchPage page = win.getActivePage(); - if (page != null) { - editor = page.getActiveEditor(); - } - } - return editor; - } - - /** - * @return stored selection - */ - public ISelection getSelection() { - return selection; - } - - /** - * @param selection - */ - public void setSelection(ISelection selection) { - this.selection = selection; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/AbstractClassButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/AbstractClassButtonDialogField.java deleted file mode 100644 index 165846a6b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/AbstractClassButtonDialogField.java +++ /dev/null @@ -1,238 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.ArrayList; -import java.util.List; -import java.util.ResourceBundle; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.ui.IJavaElementSearchConstants; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.guiutils.Alerts; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.dialogs.SelectionDialog; -import org.eclipse.ui.forms.events.HyperlinkAdapter; -import org.eclipse.ui.forms.events.HyperlinkEvent; - -/** - * @author mengbo - * @version 1.5 - */ -/*package*/ abstract class AbstractClassButtonDialogField extends - StringButtonDialogField { - private IProject _project; - - private String _superClass; - - private List _interfacesList; - - private IType _type; - - private int _typeFlag = IJavaElementSearchConstants.CONSIDER_ALL_TYPES; - - private boolean _autoOpenResource = true; - - /** - * @param autoOpenResource - */ - public void setAutoOpenResource(boolean autoOpenResource) { - _autoOpenResource = autoOpenResource; - } - - /** - * @param project - */ - public AbstractClassButtonDialogField(IProject project) { - super(null); - this._project = project; - - setHyperLink(new HyperlinkAdapter() { - public void linkActivated(HyperlinkEvent e) { - activeLink(); - } - }); - - setStringButtonAdapter(new IStringButtonAdapter() { - public void changeControlPressed(DialogField field) { - browseButtonPressed(); - } - }); - } - - private void activeLink() { - String className = getText(); - className = trimNonAlphaChars(className); - if (className.length() > 0 - && JavaUIHelper.doesClassExist(_project, className)) { - JavaUIHelper.doOpenClass(_project, className); - } else { - try { - if (_project == null || !_project.hasNature(JavaCore.NATURE_ID)) { - ResourceBundle rb = ResourceBundle - .getBundle("org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogFieldResources"); //$NON-NLS-1$ - Alerts alerts = new Alerts(JSFUICommonPlugin.getDefault(), rb); - alerts.error("ClassButtonDialogField.Alert.Title", //$NON-NLS-1$ - "ClassButtonDialogField.Alert.Msg"); //$NON-NLS-1$ - return; - } - } catch (CoreException e) { - e.printStackTrace(); - return; - } - JavaClassWizard wizard = new JavaClassWizard(_project, className, - _superClass, getImplementInterfaces()); - wizard.setAutoOpenResource(_autoOpenResource); - WizardDialog dialog = new WizardDialog(getShell(), wizard); - dialog.create(); - - setDialogSize(dialog, 400, 500); - if (dialog.open() == WizardDialog.OK) { - String newValue = wizard.getClassNameWithArgs(); - if (!newValue.equals(className)) { - setText(newValue); - } - } - } - } - - /** - * @return the interfaces - * TODO: the contract seems inconsistent - * as whether to return null or empty list when none - */ - protected abstract List getImplementInterfaces(); - - /** - * @return the java search scope to be used. Must not be null - */ - protected abstract IJavaSearchScope getJavaSearchScope(); - - private void browseButtonPressed() { - Shell shell = getShell(); - SelectionDialog dialog = JavaUIHelper.openSelectionDialog(shell, - getJavaSearchScope(), _typeFlag); - dialog.setTitle(JSFUICommonPlugin - .getResourceString("DialogField.ClassButton.SelectType"));//$NON-NLS-1$ - - if (dialog.open() == SelectionDialog.OK) { - String oldClassName = getText(); - if (dialog.getResult() != null) { - _type = (IType) dialog.getResult()[0]; - String newClassName = _type.getFullyQualifiedName(); - if (!oldClassName.equals(newClassName)) { - setText(newClassName); - } - } - } - } - - private void setDialogSize(Dialog dialog, int width, int height) { - Point computedSize = dialog.getShell().computeSize(SWT.DEFAULT, - SWT.DEFAULT); - width = Math.max(computedSize.x, width); - height = Math.max(computedSize.y, height); - dialog.getShell().setSize(width, height); - } - - private String trimNonAlphaChars(String className) { - className = className.trim(); - while (className.length() > 0 - && !Character.isLetter(className.charAt(0))) { - className = className.substring(1, className.length()); - } - int loc = className.indexOf(":"); //$NON-NLS-1$ - if (loc != -1 && loc > 0) { - className = className.substring(0, loc); - } else if (loc == 0) { - className = ""; //$NON-NLS-1$ - } - return className; - } - - /** - * @return Returns the project. - */ - public IProject getProject() { - return _project; - } - - /** - * @param project - * The project to set. - */ - public void setProject(IProject project) { - this._project = project; - } - - /** - * @return Returns the superClassName. - */ - public String getSuperClassName() { - return _superClass; - } - - /** - * @param superClassName - * The superClassName to set. - */ - public void setSuperClassName(String superClassName) { - this._superClass = superClassName; - } - - /** - * @return Returns the interfacesList. - */ - protected List getInterfacesList() { - return _interfacesList; - } - - /** - * Sets (replaces) the interface list - * TODO: this list can have at most one element - * @param interfaceName - */ - public void setInterface(String interfaceName) { - _interfacesList = new ArrayList(); - _interfacesList.add(interfaceName); - } - - /** - * @return Returns the _type. - */ - public IType getType() { - return _type; - } - - /** - * @return Returns the typeFalg. - */ - public int getTypeFlag() { - return _typeFlag; - } - - /** - * @param typeFalg - * The typeFalg to set. - */ - public void setTypeFlag(int typeFalg) { - this._typeFlag = typeFalg; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ClassButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ClassButtonDialogField.java deleted file mode 100644 index baed42bb5..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ClassButtonDialogField.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.List; - -import org.eclipse.core.resources.IProject; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.core.search.SearchEngine; - -/** - * @author mengbo - */ -public class ClassButtonDialogField extends AbstractClassButtonDialogField { - /** - * @param project - */ - public ClassButtonDialogField(IProject project) { - super(project); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.AbstractClassButtonDialogField#getImplementInterfaces() - */ - protected List getImplementInterfaces() { - return getInterfacesList(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.AbstractClassButtonDialogField#getJavaSearchScope() - */ - protected IJavaSearchScope getJavaSearchScope() { - IJavaSearchScope scope; - String superType = getSuperClassName(); - List interfaceList = getInterfacesList(); - if (superType == null && interfaceList != null - && interfaceList.size() > 0) { - superType = interfaceList.get(0).toString(); - } - if (getSuperClassName() != null && interfaceList != null - && interfaceList.size() > 0) { - superType = null; - } - if (superType == null) { - scope = SearchEngine - .createJavaSearchScope(new IJavaProject[] { JavaCore - .create(getProject()) }); - } else { - scope = JavaUIHelper.findSearchScope(getProject(), superType); - } - return scope; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorButtonDialogField.java deleted file mode 100644 index 822841455..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorButtonDialogField.java +++ /dev/null @@ -1,339 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import org.eclipse.jst.jsf.common.ui.internal.utils.StyleCombo; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.ColorDialog; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * This class provides a common color choice DialogFiled. - * - * @author mengbo - */ -public class ColorButtonDialogField extends StyleComboDialogField { - // color selection button - private Button _button; - - // the button enable flag - private boolean _buttonEnabled; - - // the current color - private Color _color; - - // the current color RGB - private RGB _colorValue; - - // the combo control - private StyleCombo _combo; - - // when no color is set or selected, using the empty image - private Image _emptyImage; - - // size of color image - private Point _extent; - - // the color image - private Image _image; - - private ColorPalette _colorPalette; - - /** - * @param flags - * @param colorPalette - */ - public ColorButtonDialogField(int flags, ColorPalette colorPalette) { - super(flags); - _buttonEnabled = true; - _colorPalette = colorPalette; - } - - private void buttonPressed() { - ColorDialog colorDialog = new ColorDialog(_button.getShell()); - colorDialog.setRGB(_colorValue); - RGB newColor = colorDialog.open(); - if (newColor != null && !newColor.equals(_colorValue)) { - _colorValue = newColor; - setText(ColorPalette.getStringColor(newColor)); - updateColorImage(); - } - } - - /** - * Compute the size of the image to be displayed. - * - * @param window - - * the window used to calculate - * @return <code>Point</code> - */ - private Point computeImageSize(Control window) { - GC gc = new GC(window); - Font f = _button.getFont(); - gc.setFont(f); - int height = gc.getFontMetrics().getHeight(); - - Point p = new Point(height * 3 - 6, height - 2); - gc.dispose(); - return p; - } - - private void disposeResources() { - if (_image != null) { - _image.dispose(); - _image = null; - } - if (_emptyImage != null) { - _emptyImage.dispose(); - _emptyImage = null; - } - if (_color != null) { - _color.dispose(); - _color = null; - } - - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#doFillIntoGrid(org.eclipse.ui.forms.widgets.FormToolkit, - * org.eclipse.swt.widgets.Composite, int) - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(toolkit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(1)); - - StyleCombo combo = getComboControl(toolkit, parent); - combo.setLayoutData(gridDataForCombo(nColumns - 3)); - - _button = getChangeControl(toolkit, parent); - _button.setLayoutData(gridDataForButton(1)); - - return new Control[] { requiredLabel, label, combo, _button }; - } - - /** - * Sets the enable state of the button. - * @param enable - */ - public void enableButton(boolean enable) { - if (isOkToUse(_button)) { - _button.setEnabled(isEnabled() && enable); - } - _buttonEnabled = enable; - } - - /** - * Creates or returns the created buttom widget. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> if the widget has - * already been created. - * @return the button widget - */ - public Button getChangeControl(FormToolkit toolkit, Composite parent) { - if (_button == null) { - assertCompositeNotNull(parent); - if (toolkit != null) { - _button = toolkit.createButton(parent, "", SWT.PUSH); //$NON-NLS-1$ - } else { - _button = new Button(parent, SWT.PUSH); - } - _button.setEnabled(isEnabled() && _buttonEnabled); - - _button.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - buttonPressed(); - } - - public void widgetSelected(SelectionEvent e) { - buttonPressed(); - } - }); - - _button.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - disposeResources(); - } - }); - - _extent = computeImageSize(parent); - _image = new Image(parent.getDisplay(), _extent.x, _extent.y); - _emptyImage = new Image(parent.getDisplay(), _extent.x, _extent.y); - initEmptyImage(_button); - updateColorImage(); - } - - return _button; - } - - private String[] getColorList() { - Map map = _colorPalette.getExtendedColorMap(); - List list = new ArrayList(map.keySet()); - Collections.sort(list); - return (String[]) list.toArray(new String[list.size()]); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.StringDialogField#getTextControl(org.eclipse.ui.forms.widgets.FormToolkit, - * org.eclipse.swt.widgets.Composite) - */ - public StyleCombo getComboControl(FormToolkit toolkit, Composite parent) { - - if (_combo == null) { - _combo = super.getComboControl(toolkit, parent); - - _combo.addSelectionListener(new SelectionListener() { - - public void widgetDefaultSelected(SelectionEvent e) { - updateImageAfterChanged(); - } - - public void widgetSelected(SelectionEvent e) { - updateImageAfterChanged(); - } - }); - _combo.addFocusListener(new FocusAdapter() { - public void focusLost(FocusEvent e) { - updateImageAfterChanged(); - } - }); - _combo.setItems(getColorList()); - } - return _combo; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#getNumberOfControls() - */ - public int getNumberOfControls() { - return 4; - } - private GridData gridDataForButton(int span) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - gd.widthHint = LayoutUtil.getButtonWidthHint(_button); - gd.heightHint = _combo.computeSize(SWT.DEFAULT, SWT.DEFAULT).y; - return gd; - } - - private void initEmptyImage(Control parent) { - Color transparentColor = parent.getForeground(); - ImageData imageData = _emptyImage.getImageData(); - imageData.transparentPixel = 0; - GC gc = new GC(_emptyImage); - gc.setBackground(transparentColor); - gc.fillRectangle(0, 0, _emptyImage.getBounds().width, _emptyImage - .getBounds().height); - } - - /** - * Set the current color value and update the control. - * - * @param rgb - * The new color. - */ - public void setColorValue(RGB rgb) { - _colorValue = rgb; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.ComboDialogField#setTextWithoutUpdate(java.lang.String) - */ - public void setTextWithoutUpdate(String text) { - super.setTextWithoutUpdate(text); - updateImageAfterChanged(); - } - - /** - * Update the image being displayed on the button using the current color - * setting. - */ - protected void updateColorImage() { - if (_button.isDisposed()) { - return; - } - - if (_colorValue == null) { - _button.setImage(_emptyImage); - return; - } - - Display display = _button.getDisplay(); - GC gc = new GC(_image); - gc.setForeground(display.getSystemColor(SWT.COLOR_BLACK)); - gc.drawRectangle(0, 0, _extent.x - 1, _extent.y - 1); - if (_color != null) { - _color.dispose(); - } - _color = new Color(display, _colorValue); - gc.setBackground(_color); - gc.fillRectangle(1, 1, _extent.x - 2, _extent.y - 2); - gc.dispose(); - _button.setImage(_image); - } - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_button)) { - _button.setEnabled(isEnabled() && _buttonEnabled); - } - } - - private void updateImageAfterChanged() { - String newColor = getText().trim(); - setColorValue(_colorPalette.getExtendedColorRGB(newColor)); - updateColorImage(); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorPalette.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorPalette.java deleted file mode 100644 index 454a4c0a5..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ColorPalette.java +++ /dev/null @@ -1,125 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2007 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.Iterator; -import java.util.Map; -import java.util.Set; - -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.RGB; - -/** - * Defines a two sets: one of basic and one of extended colors. Clients extending - * this class must provide the two maps - * - * @author cbateman - * - */ -public abstract class ColorPalette -{ - /** - * @param cssText - * @return the basic color matching the cssText key or null if color doesn't exist - */ - public final Color getBasicColor(String cssText) { - return (Color) getBasicColorMap().get(cssText.toLowerCase()); - } - - /** - * @param cssText - * @return the extended color matching the cssText key or null if color doesn't exist - */ - public final Color getExtendedColor(String cssText) { - Set keys = getExtendedColorMap().keySet(); - for (Iterator iterator = keys.iterator(); iterator.hasNext();) { - String key = (String) iterator.next(); - if (key.equalsIgnoreCase(cssText)) { - return (Color) getExtendedColorMap().get(key); - } - } - return null; - } - - /** - * @return the map of basic colors where the key is the color name (a string) - * and the value is an RGB object - */ - public abstract Map getBasicColorMap(); - - /** - * @return the map of extended colors where the key is the color name (a string) - * and the value is an Color object - */ - public abstract Map getExtendedColorMap(); - - /** - * @param textColor - * @return same as getExtendedColor but returns value as an RGB object - */ - public final RGB getExtendedColorRGB(String textColor) { - if (textColor == null || textColor.length() == 0) { - return null; - } - - Color color = getExtendedColor(textColor); - if (color != null) { - return color.getRGB(); - } - - if (textColor.charAt(0) == '#' && textColor.length() == 4) { - char[] rgbChars = textColor.toCharArray(); - char[] fullChars = { rgbChars[0], rgbChars[1], rgbChars[1], - rgbChars[2], rgbChars[2], rgbChars[3], rgbChars[3] }; - - textColor = String.valueOf(fullChars); - } - - if (textColor.charAt(0) == '#' && textColor.length() == 7) { - try { - int intColor = Integer.decode(textColor).intValue(); - - if (intColor > 0xFFFFFF || intColor < 0) { - return null; - } - int r = intColor >> 16; - int g = (intColor >> 8) & 0xFF; - int b = intColor & 0xFF; - return new RGB(r, g, b); - - } catch (NumberFormatException e) { - return null; - } - } - return null; - } - - /** - * @param rgb - * @return the hex string for equivalent of the rgb color - */ - public static String getStringColor(RGB rgb) { - if (rgb == null) { - return ""; //$NON-NLS-1$ - } - - StringBuffer buffer = new StringBuffer("#"); //$NON-NLS-1$ - int[] intRGBs = new int[] { rgb.red, rgb.green, rgb.blue }; - for (int i = 0; i < 3; i++) { - if (intRGBs[i] < 16) { - buffer.append("0"); //$NON-NLS-1$ - } - buffer.append(Integer.toHexString(intRGBs[i]).toUpperCase()); - } - return buffer.toString(); - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java deleted file mode 100644 index 582634e13..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ComboDialogField.java +++ /dev/null @@ -1,320 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.Map; -import java.util.Map.Entry; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.CCombo; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * Dialog field containing a label and a combo control. - * - * If the combo control is editable, then when user type in the field, will only - * fire dialogFieldChanged, without dialogFieldApplied just as text control. But - * when user change selection using the drop down, will fire both - * dialogFieldChanged and dialogFieldApplied - * - * @author mengbo - */ -public class ComboDialogField extends DialogFieldBase implements - ISupportTextValue { - final static private int WIDTH_HINT = 10; - - private String _text; - - private int _selectionIndex; - - private String[] _items; - - private CCombo _comboControl; - - private ModifyListener _modifyListener; - - private int _flags; - - private boolean _pending = false; - - private Map _entryMap; - - /** - * @param flags - */ - public ComboDialogField(int flags) { - super(); - _text = ""; //$NON-NLS-1$ - _items = new String[0]; - _flags = flags; - _selectionIndex = -1; - } - - // ------- layout helpers - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(toolkit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(1)); - - CCombo combo = getComboControl(toolkit, parent); - combo.setLayoutData(gridDataForCombo(nColumns - 2)); - - return new Control[] { requiredLabel, label, combo }; - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 3; - } - - private static GridData gridDataForCombo(int span) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - gd.widthHint = WIDTH_HINT; - return gd; - } - - // ------- focus methods - - /* - * @see DialogField#setFocus - */ - public boolean setFocus() { - if (isOkToUse(_comboControl)) { - _comboControl.setFocus(); - } - return true; - } - - // ------- ui creation - - /** - * Creates or returns the created combo control. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> when the widget - * has already been created. - * @return the custom combo control - */ - public CCombo getComboControl(FormToolkit toolkit, Composite parent) { - if (_comboControl == null || _comboControl.isDisposed()) { - assertCompositeNotNull(parent); - _modifyListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - doModifyText(e); - } - }; - SelectionListener selectionListener = new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - doSelectionChanged(e); - } - - public void widgetDefaultSelected(SelectionEvent e) { - handleDefaultSelection(e); - } - }; - - if (toolkit != null) { - _comboControl = new CCombo(parent, _flags); - toolkit.adapt(_comboControl); - } else { - _comboControl = new CCombo(parent, _flags | SWT.BORDER); - _comboControl.setBackground(Display.getCurrent() - .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); - } - - // moved up due to 1GEUNW2 - _comboControl.setItems(_items); - if (_selectionIndex != -1) { - _comboControl.select(_selectionIndex); - } else { - _comboControl.setText(_text); - } - _comboControl.setFont(parent.getFont()); - _comboControl.addModifyListener(_modifyListener); - _comboControl.addSelectionListener(selectionListener); - _comboControl.addFocusListener(new FocusAdapter() { - public void focusLost(FocusEvent e) { - doFocusLost(e); - } - }); - _comboControl.setEnabled(isEnabled()); - _comboControl.setToolTipText(getToolTip()); - } - return _comboControl; - } - - private void handleDefaultSelection(SelectionEvent e) { - // commit value - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - - private void doFocusLost(FocusEvent e) { - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - - private void doModifyText(ModifyEvent e) { - if (isOkToUse(_comboControl)) { - _text = getEntryKey(_comboControl.getText()); - _selectionIndex = _comboControl.getSelectionIndex(); - } - _pending = true; - dialogFieldChanged(); - } - - private void doSelectionChanged(SelectionEvent e) { - if (isOkToUse(_comboControl)) { - _items = _comboControl.getItems(); - _text = getEntryKey(_comboControl.getText()); - _selectionIndex = _comboControl.getSelectionIndex(); - } - _pending = false; - dialogFieldChangedAndApplied(); - } - - // ------ enable / disable management - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_comboControl)) { - _comboControl.setEnabled(isEnabled()); - } - } - - // ------ text access - - - /** - * Sets the combo items. Triggers a dialog-changed event. - * @param items - */ - public void setItems(String[] items) { - _items = items; - if (isOkToUse(_comboControl)) { - _comboControl.setItems(items); - } - _pending = false; - // dialogFieldChangedAndApplied(); - } - - /** - * Gets the text. - */ - public String getText() { - return _text; - } - - /** - * Sets the text. Triggers a dialog-changed event. - */ - public void setText(String text) { - setTextWithoutUpdate(text); - _pending = false; - dialogFieldChangedAndApplied(); - } - - /** - * Selects an item. - * @param index - */ - public void selectItem(int index) { - if (isOkToUse(_comboControl)) { - _comboControl.select(index); - } else { - if (index >= 0 && index < _items.length) { - _text = getEntryKey(_items[index]); - _selectionIndex = index; - } - } - dialogFieldChangedAndApplied(); - } - - /** - * Sets the text without triggering a dialog-changed event. - */ - public void setTextWithoutUpdate(String text) { - _pending = false; - if (text == null) { - text = "";//$NON-NLS-1$ - } - _text = text; - if (isOkToUse(_comboControl)) { - _comboControl.removeModifyListener(_modifyListener); - _comboControl.setText(getEntryValue(text)); - _comboControl.addModifyListener(_modifyListener); - } - } - - private String getEntryValue(String key) { - if (_entryMap == null || !_entryMap.containsKey(key)) { - return key; - } - return _entryMap.get(key).toString(); - } - - private String getEntryKey(String value) { - if (_entryMap == null || !_entryMap.containsValue(value)) { - return value; - } - - Entry[] entries = (Entry[]) _entryMap.entrySet().toArray(new Entry[0]); - for (int i = 0; i < entries.length; i++) { - if (entries[i].getValue() == value - || (value != null && value.equals(entries[i].getValue()))) { - return entries[i].getKey().toString(); - } - } - return value; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#handleGrabHorizontal() - */ - public void handleGrabHorizontal() { - LayoutUtil.setGrabHorizontal(_comboControl, true); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java deleted file mode 100644 index 0ff86f78c..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogField.java +++ /dev/null @@ -1,149 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.forms.events.IHyperlinkListener; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * @author mengbo - * @version 1.5 - */ -public interface DialogField { - /** - * this method must be called directly after constructor, in this case, - * system will create a hyper link label, and when the hyper link is - * clicked, the corresponding method on the listener will be called. A - * RuntimeException will throw out if this method is called after the label - * has been created. - * - * @param listener - * can't be null - */ - public abstract void setHyperLink(IHyperlinkListener listener); - - /** - * Sets the label of the dialog field. - * @param labeltext - */ - public abstract void setLabelText(String labeltext); - - // ------ change listener - /** - * Listener that is notified on a field change - * @param listener - */ - public abstract void setDialogFieldChangeListener( - IDialogFieldChangeListener listener); - - /** - * Listener that is notified on a field apply - * @param listener - */ - public abstract void setDialogFieldApplyListener( - IDialogFieldApplyListener listener); - - // ------- focus management - /** - * Tries to set the focus to the dialog field. Returns <code>true</code> - * if the dialog field can take focus. To be re-implemented by dialog field - * implementors. - * @return true if dialog field can take focus - */ - public abstract boolean setFocus(); - - /** - * Creates all controls of the dialog field and fills it to a composite. The - * composite is assumed to have <code>MGridLayout</code> as layout. The - * dialog field will adjust its controls' spans to the number of columns - * given. To be reimplemented by dialog field implementors. - * @param toolkit - * @param parent - * @param nColumns - * @return the controls - */ - public abstract Control[] doFillIntoGrid(FormToolkit toolkit, - Composite parent, int nColumns); - - /** - * Returns the number of columns of the dialog field. To be reimplemented by - * dialog field implementors. - * @return the number of columns - */ - public abstract int getNumberOfControls(); - - // ------- ui creation - /** - * @param _formToolkit - * @param parent - * @return the label control - */ - public abstract Control getLabelControl(FormToolkit _formToolkit, - Composite parent); - - // --------- enable / disable management - /** - * @param enabled - */ - public abstract void setEnabled(boolean enabled); - - /** - * Gets the enable state of the dialog field. - * @return true if enabled is set - */ - public abstract boolean isEnabled(); - - /** - * Get attached data by key. - * - * @param key - * @return the attached data object for key - */ - public abstract Object getAttachedData(Object key); - - /** - * You can attach any data to the DialogField, and get it using the - * <code>getAttachedData</code> method. - * - * @param key - * @param value - */ - public abstract void putAttachedData(Object key, Object value); - - /** - * this method give the DialogField a chance to set the correct column to - * grab horizontal space. In the implementation of this method, should only - * change the GridData of control, should not do anything else. - * - * The caller is responsible to make sure the controls for the dialog field - * has been created before calling this method. - */ - public abstract void handleGrabHorizontal(); - - /** - * @return true if is required field - */ - public abstract boolean isRequired(); - - /** - * @param toolTip - */ - public abstract void setToolTip(String toolTip); - - /** - * @return the field's enclosing shell or null if none - */ - public Shell getShell(); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java deleted file mode 100644 index 7d61f4983..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldBase.java +++ /dev/null @@ -1,559 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.MouseTrackAdapter; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.FontMetrics; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.forms.events.IHyperlinkListener; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Hyperlink; - -/** - * Base class of all Dialog fields. Dialog fields manage controls together with - * the model, independed from the creation time of the widgets. - support for - * automated layouting. - enable / disable, set focus a concept of the base - * class. DialogField have a label. - * - * DialogField may be used in two different context: - * <ol> - * <li> In side dialog. In this case, whenever there is anything change in the - * dialog field, such as user type anything, the dialog should listen to the - * dialogFieldChanged() events and do things like validation. When user press - * the "OK" button, dialog should call getXXX to get the value from the dialog - * field and apply them. - * <li> In side form based editor or properties view. In this case, whenever - * there is anything change in the dialog field, such as user type anything, the - * editor/view should listen to the dialogFieldChanged() events and do things - * like validation. When user press "Enter" or move the focus out of the control - * (finish editing), the dialog field will fire out dialogFieldApplied() events, - * and the editor/view should listen to this event and apply the value to the - * underlying model. - * </ol> - * - * The basic idea of the DialogField framework is comming from - * <code>org.eclipse.jface.preference.FieldEditor</code> and - * <code>org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField</code> - * - * @author mengbo - */ -public class DialogFieldBase implements DialogField { - private Label _label; - - private Label _requiredLabel; - - private String _labelText; - - private IDialogFieldChangeListener _dialogFieldChangeListener; - - private IDialogFieldApplyListener _dialogFieldApplyListener; - - private boolean _enabled; - - private FontMetrics _fontMetrics; - - private IHyperlinkListener _listener; - - private Hyperlink _hyperlink; - - private Map _attachedData; - - private boolean _isRequired; - - private String toolTip; - - /** - * default constructor - */ - public DialogFieldBase() { - _enabled = true; - _label = null; - _requiredLabel = null; - _hyperlink = null; - _labelText = ""; //$NON-NLS-1$ - } - - /** - * this method must be called directly after constructor, in this case, - * system will create a hyper link label, and when the hyper link is - * clicked, the corresponding method on the listene will be called. A - * RuntimeException will throw out if this method is called after the label - * has been created. - * - * @param listener - * can't be null - */ - public void setHyperLink(IHyperlinkListener listener) { - if (_label != null) { - throw new RuntimeException( - "The Label instance does not support the listener"); //$NON-NLS-1$ - } - this._listener = listener; - } - - /** - * Sets the label of the dialog field. - */ - public void setLabelText(String labeltext) { - _labelText = labeltext == null ? "" : labeltext; //$NON-NLS-1$ - // if (_isRequired) - // { - // _labelText = "* " + _labelText; - // } - // else - // { - // _labelText = " " + _labelText; - // } - if (_label != null && !_label.isDisposed()) { - _label.setText(_labelText); - } else if (_hyperlink != null && !_hyperlink.isDisposed()) { - _hyperlink.setText(_labelText); - } - } - - /** - * @return return the enclosing Shell or null if one cannot be determined - */ - public Shell getShell() { - if (_label != null && !_label.isDisposed()) { - return _label.getShell(); - } else if (_hyperlink != null && !_hyperlink.isDisposed()) { - return _hyperlink.getShell(); - } - return null; - } - - // ------ change listener - - /** - * Defines the listener for this dialog field. - */ - public final void setDialogFieldChangeListener( - IDialogFieldChangeListener listener) { - _dialogFieldChangeListener = listener; - } - - public final void setDialogFieldApplyListener( - IDialogFieldApplyListener listener) { - _dialogFieldApplyListener = listener; - } - - /** - * fire both dialogFieldChanged and dialogFieldApplied events. - */ - public void dialogFieldChangedAndApplied() { - if (_dialogFieldChangeListener != null) { - _dialogFieldChangeListener.dialogFieldChanged(this); - } - if (_dialogFieldApplyListener != null) { - _dialogFieldApplyListener.dialogFieldApplied(this); - } - } - - /** - * fire dialogFieldChanged event. - * - */ - public void dialogFieldChanged() { - if (_dialogFieldChangeListener != null) { - _dialogFieldChangeListener.dialogFieldChanged(this); - } - } - - /** - * fire dialogFieldApplied event. - * - */ - public void dialogFieldApplied() { - if (_dialogFieldApplyListener != null) { - _dialogFieldApplyListener.dialogFieldApplied(this); - } - } - - // ------- focus management - - - public boolean setFocus() { - return false; - } - - // - // /** - // * Posts <code>setFocus</code> to the display event queue. - // */ - // public void postSetFocusOnDialogField(Display display) - // { - // if (display != null) - // { - // display.asyncExec(new Runnable() - // { - // public void run() - // { - // setFocus(); - // } - // } - // ); - // } - // } - - // ------- layout helpers - - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(nColumns)); - - return new Control[] { label }; - } - - /** - * Initializes the computation of horizontal and vertical dialog units based - * on the size of current font. - * <p> - * This method must be called before any of the dialog unit based conversion - * methods are called. - * </p> - * - * @param control - * a control from which to obtain the current font - * @return the font metrics for control - */ - protected FontMetrics getDialogUnits(Control control) { - if (_fontMetrics == null) { - // Compute and store a font metric - GC gc = new GC(control); - gc.setFont(control.getFont()); - _fontMetrics = gc.getFontMetrics(); - gc.dispose(); - } - return _fontMetrics; - } - - /** - * Returns the number of columns of the dialog field. To be reimplemented by - * dialog field implementors. - */ - public int getNumberOfControls() { - return 1; - } - - /** - * @param span - * @return a new GridData for the horizontal 'span' value - */ - protected static GridData gridDataForLabel(int span) { - GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gd.horizontalSpan = span; - return gd; - } - - // ------- ui creation - - /** - * Creates or returns the created label widget. - * - * @param parent - * The parent composite or <code>null</code> if the widget has - * already been created. - */ - public Control getLabelControl(FormToolkit _formToolkit, Composite parent) { - Control control = null; - if ((_label == null || _label.isDisposed()) && (_hyperlink == null || _hyperlink.isDisposed())) { - assertCompositeNotNull(parent); - - String label = null; - if (_labelText != null && !"".equals(_labelText)) { //$NON-NLS-1$ - //$NON-NLS-1$ - label = _labelText; - } else { - label = "."; //$NON-NLS-1$ - } - - if (_listener == null) { - control = createLabel(_formToolkit, parent, label); - } else { - control = createHyperlink(_formToolkit, parent, label); - } - /** - * if(isRequired) { FontData[] fontData = - * parent.getFont().getFontData(); FontData[] newFontData = new - * FontData[fontData.length]; for(int i=0; i<fontData.length; i++) { - * newFontData[i] = new FontData(fontData[i].getName(), - * fontData[i].getHeight(), fontData[i].getStyle() | SWT.BOLD); } - * final Font font = new Font(control.getDisplay(),newFontData); - * control.setFont(font); control.addDisposeListener(new - * DisposeListener() { - * - * public void widgetDisposed(DisposeEvent e) { font.dispose(); } - * }); } else { control.setFont(parent.getFont()); } - */ - control.setFont(parent.getFont()); - control.setEnabled(_enabled); - } else { - if (_label != null) { - control = _label; - } else { - control = _hyperlink; - } - } - return control; - } - - /** - * @param _formToolkit - * @param parent - * @return get the Label control for required - */ - public Control getRequiredLabelControl(FormToolkit _formToolkit, - Composite parent) { - if (_requiredLabel == null || _requiredLabel.isDisposed()) { - if (_formToolkit == null) { - _requiredLabel = new Label(parent, SWT.LEFT | SWT.WRAP); - } else { - _requiredLabel = _formToolkit.createLabel(parent, "", SWT.LEFT //$NON-NLS-1$ - | SWT.WRAP); - _requiredLabel.setForeground(getLabelColor()); - } - if (_isRequired) { - _requiredLabel.setText(DialogFieldResources.getInstance() - .getString("DialogFieldBase.Label.RequiredSymbol")); //$NON-NLS-1$ - } - } - return _requiredLabel; - } - - private Control createLabel(FormToolkit _formToolkit, Composite parent, - String labelString) { - if (_formToolkit == null) { - _label = new Label(parent, SWT.LEFT | SWT.WRAP); - _label.setText(labelString); - } else { - _label = _formToolkit.createLabel(parent, labelString, SWT.LEFT - | SWT.WRAP); - _label.setForeground(getLabelColor()); - } - return _label; - } - - /** - * get color for label - */ - private Color getLabelColor() { - String osname = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$ - if (osname.startsWith("mac os")) { //$NON-NLS-1$ - return Display.getCurrent().getSystemColor( - SWT.COLOR_LIST_FOREGROUND); - } - return Display.getCurrent() - .getSystemColor(SWT.COLOR_LIST_SELECTION); - } - - private Control createHyperlink(FormToolkit _formToolkit, Composite parent, - String label) { - if (_formToolkit == null) { - _hyperlink = new Hyperlink(parent, SWT.LEFT | SWT.WRAP); - _hyperlink.setForeground(getLabelColor()); - _hyperlink.setUnderlined(true); - _hyperlink.addMouseTrackListener(new MouseTrackAdapter() { - - public void mouseEnter(MouseEvent e) { - _hyperlink.setForeground(Display.getCurrent() - .getSystemColor(SWT.COLOR_BLUE)); - } - - public void mouseExit(MouseEvent e) { - _hyperlink.setForeground(getLabelColor()); - } - }); - _hyperlink.setText(label); - } else { - _hyperlink = _formToolkit.createHyperlink(parent, label, SWT.LEFT - | SWT.WRAP); - } - _hyperlink.addHyperlinkListener(_listener); - return _hyperlink; - } - - /** - * Creates a spacer control. - * @param toolkit - * - * @param parent - * The parent composite - * @return a spacer control - */ - public Control createEmptySpace(FormToolkit toolkit, Composite parent) { - return createEmptySpace(toolkit, parent, 1); - } - - /** - * Creates a spacer control with the given span. The composite is assumed to - * have <code>MGridLayout</code> as layout. - * @param toolkit - * - * @param parent - * The parent composite - * @param span - * @return a label that creates empty space - */ - public Control createEmptySpace(FormToolkit toolkit, Composite parent, - int span) { - Label label; - if (toolkit != null) { - label = toolkit.createLabel(parent, ""); //$NON-NLS-1$ - } else { - label = new Label(parent, SWT.LEFT); - } - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.BEGINNING; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - gd.horizontalIndent = 0; - gd.widthHint = 0; - gd.heightHint = 0; - label.setLayoutData(gd); - return label; - } - - /** - * Tests is the control is not <code>null</code> and not disposed. - * @param control - * @return true if the control is valid for use - */ - protected final boolean isOkToUse(Control control) { - return (control != null) && !(control.isDisposed()); - } - - // --------- enable / disable management - - /** - * Sets the enable state of the dialog field. - */ - public final void setEnabled(boolean enabled) { - if (enabled != _enabled) { - _enabled = enabled; - updateEnableState(); - } - } - - /** - * Called when the enable state changed. To be extended by dialog field - * implementors. - */ - protected void updateEnableState() { - if (_label != null && !_label.isDisposed()) { - _label.setEnabled(_enabled); - } - if (_hyperlink != null && !_hyperlink.isDisposed()) { - _hyperlink.setEnabled(_enabled); - } - } - - /** - * Gets the enable state of the dialog field. - */ - public final boolean isEnabled() { - return _enabled; - } - - /** - * @param comp - */ - protected final void assertCompositeNotNull(Composite comp) { - Assert.isNotNull(comp, - "uncreated control requested with composite null"); //$NON-NLS-1$ - } - - /** - * @param nColumns - */ - protected final void assertEnoughColumns(int nColumns) { - Assert.isTrue(nColumns >= getNumberOfControls(), - "given number of columns is too small"); //$NON-NLS-1$ - } - - /** - * Get attached data by key. - * - * @param key - * @return the attached data object for key - */ - public Object getAttachedData(Object key) { - if (_attachedData != null) { - return _attachedData.get(key); - } - return null; - } - - /** - * You can attach any data to the DialogField, and get it using the - * <code>getAttachedData</code> method. - * - * @param key - * @param value - */ - public void putAttachedData(Object key, Object value) { - if (_attachedData == null) { - _attachedData = new HashMap(); - } - _attachedData.put(key, value); - } - - /** - * this method give the DialogField a chance to set the correct column to - * grab horizontal space. In the implementation of this method, should only - * change the GridData of control, should not do anything else. - * - * The caller is responsible to make sure the controls for the dialog field - * has been created before calling this method. - */ - public void handleGrabHorizontal() { - // do nothing. - } - - public boolean isRequired() { - return _isRequired; - } - - /** - * @param isRequired - */ - public void setRequired(boolean isRequired) { - this._isRequired = isRequired; - } - - /** - * @return gthe tool tip text - */ - protected String getToolTip() { - return toolTip; - } - - public void setToolTip(String toolTip) { - this.toolTip = toolTip; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java deleted file mode 100644 index 0ed7b3a66..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroup.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * This class represents a group of dialog fields, following the normal dialog - * field's lifecycle. - * - * The design of this class is to make a section could be reused in both dialog - * environment and form based editor environment. - * - * @author mengbo - */ -public abstract class DialogFieldGroup { - private IDialogFieldChangeListener _defaultChangeListener; - - private IDialogFieldApplyListener _defaultApplyListener; - - /** - * set default handler, should be called before <code>initialize()</code> - * @param changelistener - * - */ - public void setDefaultChangeListener( - IDialogFieldChangeListener changelistener) { - _defaultChangeListener = changelistener; - } - - /** - * Normally, the client should call this method in <code>initialize()</code> - * for those field that wants to use the default event handler. - * - * @return could be null - */ - public IDialogFieldChangeListener getDefaultChangeListener() { - return _defaultChangeListener; - } - - /** - * set default handler, should be called before <code>initialize()</code> - * - * @param applylistener - */ - public void setDefaultApplyListener(IDialogFieldApplyListener applylistener) { - _defaultApplyListener = applylistener; - } - - /** - * Normally, the client should call this method in <code>initialize()</code> - * for those field that wants to use the default event handler. - * - * @return could be null - */ - public IDialogFieldApplyListener getDefaultApplyListener() { - return _defaultApplyListener; - } - - /** - * it is supposed to create all dialog fields and setup event listeners in - * this method. - * - * Normally client will create DialogFieldSection first, then - * setDefaultChangeListener()/setDefaultApplyListener(), then call - * initialize(). - */ - public abstract void initialize(); - - /** - * reload data from underlying model and set them into the dialog fields. - * - */ - public abstract void refreshData(); - - /** - * layout the dialog fields. - * - * @param toolkit - * could be null - * @param parent - * - */ - public abstract void layoutDialogFields(FormToolkit toolkit, - Composite parent); - - /** - * validate whether the values in the dialog fields are valid. This method - * should also enable/disable dialog fields based on their current value and - * relationship - * - * @return could return null. or an array containing null elements. - */ - public abstract IStatus[] validateDialogFields(); - - /** - * Intended to allow subclasses to recreate controls. Default implementation does nothing. - */ - public void reset(){ - //do nothing by default - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroupPage.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroupPage.java deleted file mode 100644 index 2e10f45e3..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldGroupPage.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.wizard.WizardPage; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; - -/** - * @author mengbo - */ -public class DialogFieldGroupPage extends WizardPage { - private DialogFieldGroup _group; - - private IDialogFieldChangeListener _defaultChangeListener = new IDialogFieldChangeListener() { - public void dialogFieldChanged(DialogField field) { - validate(); - } - }; - - /** - * @param pageName - * @param section - */ - public DialogFieldGroupPage(String pageName, DialogFieldGroup section) { - super(pageName); - _group = section; - initializeGroup(_group); - } - - /** - * child class could override this method. - * - * @param group - */ - protected void initializeGroup(DialogFieldGroup group) { - group.setDefaultChangeListener(_defaultChangeListener); - group.initialize(); - } - - public void createControl(Composite parent) { - Composite container = new Composite(parent, SWT.NONE); - _group.layoutDialogFields(null, container); - _group.refreshData(); - validate(); - this.setControl(container); - } - - /** - * @return the dialog field group - */ - public DialogFieldGroup getDialogFieldGroup() { - return _group; - } - - /** - * validate all the dialog fields. Updates - * status line and sets page completion if there are no errors - */ - private void validate() { - IStatus[] statuses = _group.validateDialogFields(); - IStatus status = StatusUtil.getMostSevere(statuses); - StatusUtil.applyToStatusLine(this, status); - setPageComplete(status == null || status.getSeverity() != IStatus.ERROR); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.java deleted file mode 100644 index 30828e6b7..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils; - -/** - * Resource bundle class for datastore wizard and it's pages - * - * @author mengbo - */ -/*package*/ class DialogFieldResources extends ResourceUtils { - /** Create the logger for this class */ - private static Logger _log = JSFUICommonPlugin - .getLogger(DialogFieldResources.class); - - private static DialogFieldResources _resource; // singleton - - private static final String BUNDLE = DialogFieldResources.class.getName(); - - /** - * Empty Constructor. - * - * @return WizardsResources - */ - - public static DialogFieldResources getInstance() { - if (_resource == null) { - _resource = new DialogFieldResources(); - } - return _resource; - } - - /** - * The constructor create a resource bundle - */ - protected DialogFieldResources() { - try { - _resources = ResourceBundle.getBundle(BUNDLE); - // NOTE: this throws a runtime "MissingResourceException". - } catch (MissingResourceException ee) { - // Wizards.WizardResource.Error.ResourceNotFound = Unable to locate - // resource. - _log.error("Wizards.WizardResource.Error.ResourceNotFound", ee); //$NON-NLS-1$ - } - setBundle(_resources, BUNDLE); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.properties b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.properties deleted file mode 100644 index ad34404dd..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/DialogFieldResources.properties +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################### -# Copyright (c) 2001, 2007 Oracle 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: -# Oracle Corporation - initial API and implementation -############################################################################### -################################################################## -# Resource message for SourceFolderButtonDialogField. -################################################################## -SourceFolderButtonDialogField.container.label = Source Folder: -SourceFolderButtonDialogField.container.button = Browse... - -SourceFolderButtonDialogField.ChooseSourceContainerDialog.Title = Folder Selection -SourceFolderButtonDialogField.ChooseSourceContainerDialog.Description = Choose a folder: - -SourceFolderButtonDialogField.error.EnterContainerName = Folder name is empty. -SourceFolderButtonDialogField.error.NotSameProject = The project should be \''{0}\''. -SourceFolderButtonDialogField.error.ContainerIsBinary=''{0}'' is a JAR archive. -SourceFolderButtonDialogField.error.ContainerDoesNotExist=Folder ''{0}'' does not exist. -SourceFolderButtonDialogField.error.NotAFolder=''{0}'' must be a project or folder. -SourceFolderButtonDialogField.error.ProjectClosed=Project ''{0}'' must be accessible. -SourceFolderButtonDialogField.warning.NotAJavaProject=Folder ''{0}'' is not a Java project. -SourceFolderButtonDialogField.warning.NotInAJavaProject=Folder ''{0}'' is not in a Java project. -SourceFolderButtonDialogField.warning.NotOnClassPath=Folder ''{0}'' is not on the Java build class path. - - -################################################################## -# Resource message for PackageButtonDialogField. -################################################################## -PackageButtonDialogField.package.label=Pac&kage: -PackageButtonDialogField.package.button=Bro&wse... - -PackageButtonDialogField.error.InvalidPackageName=Package name ''{0}'' is not valid. -PackageButtonDialogField.error.ClashOutputLocation=Package clashes with project output folder. -PackageButtonDialogField.warning.DiscouragedPackageName=This package name ''{0}'' is discouraged. -PackageButtonDialogField.warning.DefaultPackageDiscouraged=The use of the default package is discouraged. - -PackageButtonDialogField.ChoosePackageDialog.title=Package Selection -PackageButtonDialogField.ChoosePackageDialog.description=&Choose a folder: -PackageButtonDialogField.ChoosePackageDialog.empty=Cannot find packages to select. - -ClassButtonDialogField.Alert.Title=Error Open Type -ClassButtonDialogField.Alert.Msg=The project does not have Java Nature. -DialogFieldBase.Label.RequiredSymbol=*
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldApplyListener.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldApplyListener.java deleted file mode 100644 index e8be7b8f8..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldApplyListener.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - - -/** - * @author mengbo - */ -public interface IDialogFieldApplyListener { - /** - * when the DialogField believe it should apply its value in UI, will fire - * this event. - * - * Normally, for text input, when user is typing, will only fire - * dialogFieldChanged(), when lose focus will fire dialogFieldApplied(). - * - * For other control, such as readonly combo box, whenever user change - * selection, will fire both dialogFieldChanged() and dialogFieldApplied() - * - * @param field - */ - void dialogFieldApplied(DialogField field); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldChangeListener.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldChangeListener.java deleted file mode 100644 index b5ead67e0..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IDialogFieldChangeListener.java +++ /dev/null @@ -1,27 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - - -/** - * Change listener used by <code>DialogField</code> - * - * @author mengbo - */ -public interface IDialogFieldChangeListener { - - /** - * The dialog field has changed. - * @param field - */ - void dialogFieldChanged(DialogField field); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IStringButtonAdapter.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IStringButtonAdapter.java deleted file mode 100644 index 466e35578..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/IStringButtonAdapter.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - - -/** - * Change listener used by <code>StringButtonDialogField</code> - */ -public interface IStringButtonAdapter { - - /** - * @param field - */ - void changeControlPressed(DialogField field); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ISupportTextValue.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ISupportTextValue.java deleted file mode 100644 index 014752d66..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ISupportTextValue.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -/** - * DialogField can choose to also implement this interface. The purpose of this - * interface is to make DialogFields to be more easily used to edit element - * attributes, since attributes are all of string type. - * - * @author mengbo - * @version 1.5 - */ -public interface ISupportTextValue { - /** - * @param value - */ - public void setTextWithoutUpdate(String value); - - /** - * @return the text - */ - public String getText(); - - /** - * @param value - */ - public void setText(String value); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizard.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizard.java deleted file mode 100644 index 745874044..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizard.java +++ /dev/null @@ -1,186 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.lang.reflect.InvocationTargetException; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.dialogs.IDialogSettings; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.wizard.Wizard; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.WorkspaceModifyOperation; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard; - -/** - * @author mengbo - */ -/*package*/ class JavaClassWizard extends Wizard { - private static String STORE_SECTION = "JavaClassWizard"; //$NON-NLS-1$ - - private JavaClassWizardPage _mainPage; - - private String _className, _classArgs; - - private IProject _project; - - private String _superClass; - - private List _interfaceList; - - private boolean _autoOpenResource = true; - - /** - * @param autoOpenResource - */ - public void setAutoOpenResource(boolean autoOpenResource) { - _autoOpenResource = autoOpenResource; - } - - /** - * @param project - * @param className - */ - public JavaClassWizard(IProject project, String className) { - this(project, className, null, null); - } - - /** - * @param project - * @param className - * @param superClass - * @param superInterfaces - */ - public JavaClassWizard(IProject project, String className, - String superClass, List superInterfaces) { - this._project = project; - this._className = className; - this._superClass = superClass; - this._interfaceList = superInterfaces; - IDialogSettings masterSettings = JSFUICommonPlugin.getDefault() - .getDialogSettings(); - setDialogSettings(getSettingsSection(masterSettings)); - setWindowTitle(JSFUICommonPlugin - .getResourceString("DialogField.JavaClassWizard.NewClass"));//$NON-NLS-1$ - setNeedsProgressMonitor(true); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.wizard.IWizard#addPages() - */ - public void addPages() { - _mainPage = new JavaClassWizardPage(_project, _className, _superClass, - _interfaceList); - addPage(_mainPage); - _mainPage.init(); - } - - private IDialogSettings getSettingsSection(IDialogSettings master) { - IDialogSettings setting = master.getSection(STORE_SECTION); - if (setting == null) { - setting = master.addNewSection(STORE_SECTION); - } - return setting; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.wizard.IWizard#performFinish() - */ - public boolean performFinish() { - if (_mainPage.getPackageText() != null - && _mainPage.getPackageText().length() > 0) { - StringBuffer buffer = new StringBuffer(_mainPage.getPackageText()); - buffer.append(".");//$NON-NLS-1$ - buffer.append(_mainPage.getTypeName()); - _className = buffer.toString(); - } else { - _className = _mainPage.getTypeName(); - } - _classArgs = _mainPage.getClassArgs(); - IRunnableWithProgress op = new WorkspaceModifyOperation() { - protected void execute(IProgressMonitor monitor) - throws CoreException, InvocationTargetException, - InterruptedException { - _mainPage.createType(monitor); - IResource resource = _mainPage.getModifiedResource(); - if (resource != null && _autoOpenResource) { - selectAndReveal(resource); - if (_project.hasNature(JavaCore.NATURE_ID)) { - IJavaProject jProject = JavaCore.create(_project); - IJavaElement jElement = jProject.findElement(resource - .getProjectRelativePath() - .removeFirstSegments(1)); - if (jElement != null) { - JavaUI.openInEditor(jElement); - } - } else if (resource instanceof IFile) { - IWorkbenchPage page = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, (IFile) resource, true); - } - } - } - - }; - try { - getContainer().run(false, true, op); - } catch (InvocationTargetException e) { - e.printStackTrace(); // PDEPlugin.logException(e); - } catch (InterruptedException e) { - e.printStackTrace();// PDEPlugin.logException(e); - } - return true; - } - - private void selectAndReveal(IResource newResource) { - BasicNewResourceWizard.selectAndReveal(newResource, - getWorkbenchWindow()); - } - - private IWorkbenchWindow getWorkbenchWindow() { - return PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - } - - private String getClassName() { - return _className; - } - - /** - * @return the class name including args - */ - public String getClassNameWithArgs() { - if (_classArgs != null && _classArgs.length() > 0) { - StringBuffer buffer = new StringBuffer(_className); - buffer.append(":");//$NON-NLS-1$ - buffer.append(_classArgs); - return buffer.toString(); - } - return getClassName(); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizardPage.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizardPage.java deleted file mode 100644 index b445c60c2..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaClassWizardPage.java +++ /dev/null @@ -1,249 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.List; - -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.JavaConventions; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.ui.wizards.NewClassWizardPage; - -/** - * @author mengbo - */ -/*package*/ class JavaClassWizardPage extends NewClassWizardPage { - private String _className; - - private final IProject _project; - - private final InitialClassProperties _initialValues; - - private IJavaProject _javaProject; - - private IStatus _fClassNameStatus, _fPackageNameStatus; - - private final static String SOURCE_COMPLIANCE_1_3 = JavaCore.VERSION_1_3; - - static class InitialClassProperties { - // populate new wizard page - private String superClassName; - - private List interfacesName; - - private String className; - - private String classArgs; - - private String packageName; - - private IPackageFragmentRoot packageFragmentRoot; - - private IPackageFragment packageFragment; - - InitialClassProperties() { - this.superClassName = ""; //$NON-NLS-1$ - this.interfacesName = null; - this.className = null; - this.classArgs = null; - this.packageName = null; - this.packageFragment = null; - this.packageFragmentRoot = null; - } - } - - /** - * @param project - * @param className - * @param superClassName - * @param interfacesName - */ - public JavaClassWizardPage(IProject project, String className, - String superClassName, List interfacesName) { - super(); - this._className = className; - this._project = project; - try { - if (project != null && project.hasNature(JavaCore.NATURE_ID)) { - this._javaProject = JavaCore.create(project); - } else { - this._javaProject = null; - } - } catch (CoreException e) { - e.printStackTrace();// PDEPlugin.logException(e); - } - _initialValues = new InitialClassProperties(); - _initialValues.className = className; - _initialValues.superClassName = superClassName; - _initialValues.interfacesName = interfacesName; - } - - /** - * @param project - * @param className - */ - public JavaClassWizardPage(IProject project, String className) { - this(project, className, null, null); - } - - /** - * Call when page is added to wizard to initialize - */ - public void init() { - initializeExpectedValues(); - initializeWizardPage(); - } - - private void initializeExpectedValues() { - // source folder name, package name, class name - int loc = _className.indexOf(":"); //$NON-NLS-1$ - if (loc != -1) { - if (loc < _className.length()) { - _initialValues.classArgs = _className.substring(loc + 1, - _className.length()); - _className = _className.substring(0, loc); - } - if (loc > 0) { - _initialValues.className = _className.substring(0, loc); - } else if (loc == 0) { - _initialValues.className = ""; //$NON-NLS-1$ - } - } - _fClassNameStatus = JavaConventions - .validateJavaTypeName(_initialValues.className, SOURCE_COMPLIANCE_1_3,SOURCE_COMPLIANCE_1_3); - - loc = _className.lastIndexOf('.'); - if (loc != -1) { - _initialValues.packageName = _className.substring(0, loc); - _initialValues.className = _className.substring(loc + 1); - _fPackageNameStatus = JavaConventions - .validateJavaTypeName(_initialValues.packageName, SOURCE_COMPLIANCE_1_3,SOURCE_COMPLIANCE_1_3); - _fClassNameStatus = JavaConventions - .validateJavaTypeName(_initialValues.className, SOURCE_COMPLIANCE_1_3,SOURCE_COMPLIANCE_1_3); - } - if (_javaProject == null) { - return; - } - try { - if (_initialValues.packageFragmentRoot == null) { - IPackageFragmentRoot srcEntryDft = null; - IPackageFragmentRoot[] roots = _javaProject - .getPackageFragmentRoots(); - for (int i = 0; i < roots.length; i++) { - if (roots[i].getKind() == IPackageFragmentRoot.K_SOURCE) { - srcEntryDft = roots[i]; - break; - } - } - if (srcEntryDft != null) { - _initialValues.packageFragmentRoot = srcEntryDft; - } else { - _initialValues.packageFragmentRoot = _javaProject - .getPackageFragmentRoot(_javaProject.getResource()); - } - if (_initialValues.packageFragment == null - && _initialValues.packageFragmentRoot != null - && _initialValues.packageName != null - && _initialValues.packageName.length() > 0) { - IFolder packageFolder = _project - .getFolder(_initialValues.packageName); - _initialValues.packageFragment = _initialValues.packageFragmentRoot - .getPackageFragment(packageFolder - .getProjectRelativePath().toOSString()); - } - } - // superclass and interface - if (_initialValues.superClassName == null) { - _initialValues.superClassName = "java.lang.Object"; //$NON-NLS-1$ - } -// _initialValues.superClassType = findTypeForName(_initialValues.superClassName); - } catch (JavaModelException e) { - e.printStackTrace();// PDEPlugin.logException(e); - } - } - - /** - * initialize the wizard page - */ - protected void initializeWizardPage() { - setPackageFragmentRoot(_initialValues.packageFragmentRoot, true); - setPackageFragment(_initialValues.packageFragment, true); - setEnclosingType(null, true); - setEnclosingTypeSelection(false, true); - setTypeName(_initialValues.className, true); - setSuperClass(_initialValues.superClassName, true); - if (_initialValues.interfacesName != null) { - setSuperInterfaces(_initialValues.interfacesName, true); - } - boolean hasSuperClass = _initialValues.superClassName != null - && _initialValues.superClassName.length() > 0; - boolean hasInterface = _initialValues.interfacesName != null - && _initialValues.interfacesName.size() > 0; - setMethodStubSelection(false, hasSuperClass, hasInterface - || hasSuperClass, true); - } - -// private IType findTypeForName(String typeName) throws JavaModelException { -// if (typeName == null || typeName.length() == 0) { -// return null; -// } -// IType type = null; -// String fileName = typeName.replace('.', '/') + ".java"; //$NON-NLS-1$ -// IJavaElement element = _javaProject.findElement(new Path(fileName)); -// if (element == null) { -// return null; -// } -// if (element instanceof IClassFile) { -// type = ((IClassFile) element).getType(); -// } else if (element instanceof ICompilationUnit) { -// IType[] types = ((ICompilationUnit) element).getTypes(); -// type = types[0]; -// } -// return type; -// } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.ui.wizards.NewClassWizardPage#setVisible(boolean) - */ - public void setVisible(boolean visible) { - super.setVisible(visible); - // policy: wizards are not allowed to come up with an error message; - // in this wizard, some fields may need initial validation and thus, - // potentially start with an error message. - if (_fClassNameStatus != null && !_fClassNameStatus.isOK()) { - updateStatus(_fClassNameStatus); - } - if (_fPackageNameStatus != null && !_fPackageNameStatus.isOK()) { - updateStatus(_fPackageNameStatus); - } - } - - /** - * @return the class arguments or "" if not set - */ - public String getClassArgs() { - if (_initialValues.classArgs == null) { - return ""; //$NON-NLS-1$ - } - return _initialValues.classArgs; - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScope.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScope.java deleted file mode 100644 index 8ac58072d..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScope.java +++ /dev/null @@ -1,221 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.ArrayList; -import java.util.HashSet; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jdt.core.IClasspathEntry; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.ITypeHierarchy; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jst.jsf.common.ui.IFileFolderConstants; - -/** - * @author mengbo - */ -/*package*/ class JavaSearchScope implements IJavaSearchScope { - private final IProject _project; - - private final String _superType; - - private HashSet _allowedTypeSet; - - private IPath[] _enclosingProjectsAndJars; - - private IProject[] _relativeProjects; - - /** - * @param project - * @param superType - */ - public JavaSearchScope(IProject project, String superType) { - this._project = project; - this._superType = superType; - computeRelativeProjects(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars() - */ - public IPath[] enclosingProjectsAndJars() { - if (_enclosingProjectsAndJars == null) { - ArrayList list = new ArrayList(); - for (int i = 0; i < _relativeProjects.length; i++) { - try { - if (_relativeProjects[i].hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore - .create(_relativeProjects[i]); - IClasspathEntry[] classpath = javaProject - .getResolvedClasspath(true); - for (int j = 0; j < classpath.length; j++) { - list.add(classpath[j].getPath()); - } - list.add(javaProject.getPath()); - } - } catch (CoreException e)// NOPMD - { - // skip the project. - } - } - _enclosingProjectsAndJars = (IPath[]) list.toArray(new IPath[(list - .size())]); - } - return _enclosingProjectsAndJars; - } - - private void computeRelativeProjects() { - try { - IProject[] referencedProjects = _project.getReferencedProjects(); - _relativeProjects = new IProject[referencedProjects.length + 1]; - System.arraycopy(referencedProjects, 0, _relativeProjects, 1, - referencedProjects.length); - _relativeProjects[0] = _project; - } catch (CoreException e) { - _relativeProjects = new IProject[] { _project }; - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(java.lang.String) - */ - public boolean encloses(String resourcePath) { - if (_allowedTypeSet == null) { - try { - _allowedTypeSet = findAllowedTypes(_superType); - } catch (CoreException e) { - e.printStackTrace(); - } - } - if (_allowedTypeSet == null) { - _allowedTypeSet = new HashSet(); - } - int separatorIndex = resourcePath.indexOf(JAR_FILE_ENTRY_SEPARATOR); - if (separatorIndex != -1) { - String className = resourcePath.substring(separatorIndex + 1, - resourcePath.length() - 6).replace('/', '.'); - if (_allowedTypeSet.contains(className)) { - return true; - } - } else if (_allowedTypeSet.contains(resourcePath)) { - return true; - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(org.eclipse.jdt.core.IJavaElement) - */ - public boolean encloses(IJavaElement element) { - return encloses(element.getPath().toString()); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#includesBinaries() - */ - public boolean includesBinaries() { - return true; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#includesClasspaths() - */ - public boolean includesClasspaths() { - return true; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#setIncludesBinaries(boolean) - */ - public void setIncludesBinaries(boolean includesBinaries) { - // do nothing, includeBinaries always true - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#setIncludesClasspaths(boolean) - */ - public void setIncludesClasspaths(boolean includesClasspaths) { - // do nothing, includeClasspaths always trues - } - - private HashSet findAllowedTypes(String superType) throws CoreException { - HashSet set = new HashSet(); - - IProject[] projects = _relativeProjects; - - for (int i = 0; i < projects.length; i++) { - IType type = null; - if (projects[i].hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore.create(projects[i]); - if (superType != null) { - try { - type = javaProject.findType(superType); - if (type != null) { - ITypeHierarchy typeHierarchy = type - .newTypeHierarchy(javaProject, null); - IType[] subtypes = typeHierarchy - .getAllSubtypes(type); - for (int j = 0; j < subtypes.length; j++) { - if (!subtypes[j].isBinary()) { - set.add(subtypes[j].getPath().toString()); - } else { - String path = subtypes[j].getPath() - .toString(); - if (path != null - && path - .endsWith(IFileFolderConstants.DOT - + IFileFolderConstants.EXT_JAR)) { - set.add(subtypes[j] - .getFullyQualifiedName()); - } else { - set.add(path); - } - } - } - } - } catch (JavaModelException e) { - e.printStackTrace(); - } - } - } - } - return set; - } - - /** - * @return Returns the superType. - */ - public String getSuperType() { - return _superType; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScopeDecorator.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScopeDecorator.java deleted file mode 100644 index 94cd55ca1..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaSearchScopeDecorator.java +++ /dev/null @@ -1,139 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.search.IJavaSearchScope; - -/** - * @author mengbo - * @version 1.5 - */ -/*package*/ class JavaSearchScopeDecorator implements IJavaSearchScope { - JavaSearchScope[] _scopes = new JavaSearchScope[0]; - - /** - * @param project - * @param superTypes - */ - public JavaSearchScopeDecorator(IProject project, List superTypes) { - List scopeList = new ArrayList(); - if (superTypes != null) { - for (int i = 0; i < superTypes.size(); i++) { - scopeList.add(new JavaSearchScope(project, superTypes.get(i) - .toString())); - } - } - _scopes = (JavaSearchScope[]) scopeList - .toArray(new JavaSearchScope[scopeList.size()]); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(java.lang.String) - */ - public boolean encloses(String resourcePath) { - for (int i = 0; i < _scopes.length; i++) { - if (_scopes[i].encloses(resourcePath) == true) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#encloses(org.eclipse.jdt.core.IJavaElement) - */ - public boolean encloses(IJavaElement element) { - for (int i = 0; i < _scopes.length; i++) { - if (_scopes[i].encloses(element) == true) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#enclosingProjectsAndJars() - */ - public IPath[] enclosingProjectsAndJars() { - Set set = new HashSet(); - for (int i = 0; i < _scopes.length; i++) { - set.addAll(Arrays.asList(_scopes[i].enclosingProjectsAndJars())); - } - return (IPath[]) set.toArray(new IPath[set.size()]); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#includesBinaries() - */ - public boolean includesBinaries() { - for (int i = 0; i < _scopes.length; i++) { - if (_scopes[i].includesBinaries() == true) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#includesClasspaths() - */ - public boolean includesClasspaths() { - for (int i = 0; i < _scopes.length; i++) { - if (_scopes[i].includesClasspaths() == true) { - return true; - } - } - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#setIncludesBinaries(boolean) - */ - public void setIncludesBinaries(boolean includesBinaries) { - for (int i = 0; i < _scopes.length; i++) { - _scopes[i].setIncludesBinaries(includesBinaries); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jdt.core.search.IJavaSearchScope#setIncludesClasspaths(boolean) - */ - public void setIncludesClasspaths(boolean includesClasspaths) { - for (int i = 0; i < _scopes.length; i++) { - _scopes[i].setIncludesClasspaths(includesClasspaths); - } - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaUIHelper.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaUIHelper.java deleted file mode 100644 index 8bee86022..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/JavaUIHelper.java +++ /dev/null @@ -1,140 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.search.IJavaSearchScope; -import org.eclipse.jdt.core.search.SearchEngine; -import org.eclipse.jdt.ui.JavaUI; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.dialogs.SelectionDialog; -import org.eclipse.ui.ide.IDE; - -/** - * @author mengbo - */ -public final class JavaUIHelper { - /** - * @param project - * @param className - */ - static void doOpenClass(IProject project, String className) { - String path = className.replace('.', '/') + ".java"; //$NON-NLS-1$ - try { - if (project.hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore.create(project); - IJavaElement result = javaProject.findElement(new Path(path)); - JavaUI.openInEditor(result); - } else { - IResource resource = project.findMember(new Path(path)); - if (resource instanceof IFile) { - IWorkbenchPage page = PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, (IFile) resource, true); - } - } - } catch (PartInitException e) { - e.printStackTrace();// PDEPlugin.logException(e); - } catch (JavaModelException e) { - e.printStackTrace();// Display.getCurrent().beep(); - } catch (CoreException e) { - e.printStackTrace();// PDEPlugin.logException(e); - } - } - - /** - * @param project - * @param className - * @return true if the class exists in project - */ - static boolean doesClassExist(IProject project, String className) { - String path = className.replace('.', '/') + ".java"; //$NON-NLS-1$ - try { - if (project.hasNature(JavaCore.NATURE_ID)) { - IJavaProject javaProject = JavaCore.create(project); - - IJavaElement result = javaProject.findElement(new Path(path)); - return result != null; - } - IResource resource = project.findMember(new Path(path)); - return resource != null; - } catch (JavaModelException e) { - return false; - } catch (CoreException e) { - return false; - } - } - - /** - * @param shell - * @param searchScope - * @param typeFlag - * @return the selection dialog - */ - static SelectionDialog openSelectionDialog(Shell shell, - IJavaSearchScope searchScope, int typeFlag) { - try { - return JavaUI.createTypeDialog(shell, new ProgressMonitorDialog( - shell), searchScope, typeFlag, false); - } catch (JavaModelException e) { - JSFUICommonPlugin.getLogger(JavaUIHelper.class).error(e); - return null; - } - } - - /** - * @param shell - * @param project - * @param superType - * @param typeFlag - * @return the selection dialog - */ - public static SelectionDialog openSelectionDialog(Shell shell, - IProject project, String superType, int typeFlag) { - IJavaSearchScope searchScope = findSearchScope(project, superType); - return openSelectionDialog(shell, searchScope, typeFlag); - } - - /** - * @param project - * @param superType - * @return the search scope - */ - static IJavaSearchScope findSearchScope(IProject project, - String superType) { - if (project != null) { - if (superType == null || "".equals(superType)) { //$NON-NLS-1$ - superType = "java.lang.Object";//$NON-NLS-1$ - } - return new JavaSearchScope(project, superType); - } - return SearchEngine.createWorkspaceScope(); - } - - private JavaUIHelper() - { - // static helper, no instantiation - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/LayoutUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/LayoutUtil.java deleted file mode 100644 index 2457cd153..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/LayoutUtil.java +++ /dev/null @@ -1,116 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.FontMetrics; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * A layout utility class - * - */ -public final class LayoutUtil { - // The Text control looks higher then Button control when they have the same - // height, - // Increasing the height of 5 pixels will make them looks the same height. - private final static int BUTTON_HEIGHT_ADJUSTMENT = 5; - - - /** - * @param control - * @param grab - */ - public static void setGrabHorizontal(Control control, boolean grab) { - Object ld = control.getLayoutData(); - if (ld instanceof GridData) { - ((GridData) ld).grabExcessHorizontalSpace = grab; - } - } - - /** - * Sets the width hint of a control. Assumes that GridData is used. - * @param control - * @param widthHint - */ - public static void setWidthHint(Control control, int widthHint) { - Object ld = control.getLayoutData(); - if (ld instanceof GridData) { - ((GridData) ld).widthHint = widthHint; - } - } - - - /** - * Sets the horizontal indent of a control. Assumes that GridData is used. - * @param control - * @param horizontalIndent - */ - static void setHorizontalIndent(Control control, int horizontalIndent) { - Object ld = control.getLayoutData(); - if (ld instanceof GridData) { - ((GridData) ld).horizontalIndent = horizontalIndent; - } - } - - /** - * Sets the horizontal indent of a control. Assumes that GridData is used. - * @param control - */ - public static void setHorizontalGrabbing(Control control) { - Object ld = control.getLayoutData(); - if (ld instanceof GridData) { - ((GridData) ld).grabExcessHorizontalSpace = true; - } - } - - /** - * Returns a width hint for a button control. - * @param button - * @return the hint value - */ - static int getButtonWidthHint(Button button) { - if (button.getFont().equals(JFaceResources.getDefaultFont())) - button.setFont(JFaceResources.getDialogFont()); - - GC gc = new GC(button); - gc.setFont(button.getFont()); - FontMetrics fontMetrics = gc.getFontMetrics(); - gc.dispose(); - - int length = button.getText().length(); - int widthHint = Dialog.convertWidthInCharsToPixels(fontMetrics, - length < 2 ? 2 : length); - return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, - true).x); - } - - static int getButtonHeightHint(FormToolkit toolkit, Text text) { - if (toolkit != null) { - return text.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y - + BUTTON_HEIGHT_ADJUSTMENT; - } - return text.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).y; - } - - private LayoutUtil() - { - // static utility class; no instantiation - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java deleted file mode 100644 index 7db537b68..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/RadiosDialogField.java +++ /dev/null @@ -1,233 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * This will display a labal and a group of radio buttons. The group of radio - * buttons will be layed out horizontally use a RowLayout, and them as a group - * will use one cell in the GridLayout. - * - * Whenever the radios selection change will fire both dialogFieldChanged() and - * dialogFieldApplied() event. - * - * @author mengbo - */ -public class RadiosDialogField extends DialogFieldBase { - final static private String INDEXKEY = "INDEX"; //$NON-NLS-1$ - - private Composite _group; - - private String[] _items; - - private Button[] _button; - - private int _selectIndex = -1; - - private boolean _fireEvent = true; - - /** - * Default constructor - */ - public RadiosDialogField() { - super(); - } - - /** - * this method must be called before create control - * - * @param items - */ - public void setItems(String[] items) { - _items = items; - _button = new Button[_items.length]; - } - - // ------- layout helpers - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(toolkit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(1)); - - _group = getGroup(toolkit, parent); - _group.setLayoutData(gridDataForGroup(nColumns - 2)); - - return new Control[] { requiredLabel, label, _group }; - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 3; - } - - /** - * @param span - * @return the grid data - */ - protected static GridData gridDataForGroup(int span) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - return gd; - } - - // ------- focus methods - - /* - * @see DialogField#setFocus - */ - public boolean setFocus() { - if (isOkToUse(_group)) { - _group.setFocus(); - } - return true; - } - - // ------- ui creation - - /** - * @param toolkit - * @param parent - * @return the group composite - */ - public Composite getGroup(FormToolkit toolkit, Composite parent) { - if (_group == null || _group.isDisposed()) { - assertCompositeNotNull(parent); - if (toolkit != null) { - _group = toolkit.createComposite(parent); - } else { - _group = new Composite(parent, SWT.NONE); - } - RowLayout layout = new RowLayout(); - layout.marginBottom = 0; - _group.setLayout(layout); - for (int i = 0; i < _items.length; i++) { - if (toolkit != null) { - _button[i] = toolkit.createButton(_group, _items[i], - SWT.RADIO); - } else { - _button[i] = new Button(_group, SWT.RADIO); - _button[i].setText(_items[i]); - } - _button[i].setData(INDEXKEY, new Integer(i)); - _button[i].addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - if (_fireEvent) { - _selectIndex = ((Integer) e.widget - .getData(INDEXKEY)).intValue(); - // FIXME: seemed will fire widgetSelected twice, one - // for the deselect one, - // one for the newly selected one. Need investigate. - if (((Button) e.widget).getSelection()) { - dialogFieldChangedAndApplied(); - } - } - } - - }); - } - } - return _group; - } - - // ------ enable / disable management - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_group)) { - _group.setEnabled(isEnabled()); - } - } - - // ------ text access - - /** - * Sets the text. Triggers a dialog-changed event. - * @param index - */ - public void setSelectedIndex(int index) { - _selectIndex = index; - if (isOkToUse(_group)) { - if (_selectIndex >= 0 && _selectIndex < _items.length) { - _button[_selectIndex].setSelection(true); - } else { - for (int i = 0; i < _items.length; i++) { - if (_button[i].getSelection()) { - _button[i].setSelection(false); - } - } - } - } - dialogFieldChangedAndApplied(); - } - - /** - * Sets the text without triggering a dialog-changed event. - * @param index - */ - public void setSelectedIndexWithoutUpdate(int index) { - _selectIndex = index; - if (isOkToUse(_group)) { - _fireEvent = false; - if (_selectIndex >= 0 && _selectIndex < _items.length) { - _button[_selectIndex].setSelection(true); - } else { - for (int i = 0; i < _items.length; i++) { - if (_button[i].getSelection()) { - _button[i].setSelection(false); - } - } - } - _fireEvent = true; - } - } - - /** - * @return the index selected - */ - public int getSelectedIndex() { - return _selectIndex; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#handleGrabHorizontal() - */ - public void handleGrabHorizontal() { - LayoutUtil.setGrabHorizontal(this._group, true); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ResourceButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ResourceButtonDialogField.java deleted file mode 100644 index 8ab30f002..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/ResourceButtonDialogField.java +++ /dev/null @@ -1,231 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.window.Window; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.dialogs.CommonResourceDialog; -import org.eclipse.jst.jsf.common.ui.internal.utils.PathUtil; -import org.eclipse.jst.jsf.common.ui.internal.utils.WebrootUtil; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Shell; - -/** - * This class provides a common resource choice DialogFiled. You must set a - * no-null IProject instance to enable it working. You should give it a suffix - * list if you want to choose files ended with specific file extensions. The - * selection result will be a relative path based on the _referredFile's value - * if it is set, or else based on the _project path. - * - * The usage: Shell shell = new Shell(); IProject project = getProject(); - * ResourceButtonDialogField localeField = new - * ResourceButtonDialogField(project); - * localeField.setResourceDescription("image"); localeField.setSuffixs(new - * String[]{"bmp","jpg","gif"}); - * localeField.setReferredFile(StructuredModelUtil.getFileFor(_element.getModel())); - * - * @author mengbo - */ -public class ResourceButtonDialogField extends StringButtonDialogField { - private IProject _project; - - private String[] _suffixs; - - private String _resourceDescription; - - private IFile _referredFile; - - private boolean _isWebPath = false; - - private IFolder _folder; - - private String _separator = ""; //$NON-NLS-1$ - - /** - * @param project - */ - public ResourceButtonDialogField(IProject project) { - this(null, project); - setStringButtonAdapter(new IStringButtonAdapter() { - public void changeControlPressed(DialogField field) { - String oldValue = getText(); - String newValue = browseButtonPressed(); - if (newValue != null && !newValue.equals(oldValue)) { - setText(newValue); - } - } - }); - } - - /** - * @param adapter - * @param project - */ - public ResourceButtonDialogField(IStringButtonAdapter adapter, - IProject project) { - super(adapter); - this._project = project; - } - - /** - * @return the string - */ - protected String browseButtonPressed() { - Shell shell = getShell(); - CommonResourceDialog dialog = null; - int style = "".equals(_separator) ? SWT.NONE : SWT.MULTI | SWT.H_SCROLL //$NON-NLS-1$ - | SWT.V_SCROLL; - if (_folder != null) { - dialog = new CommonResourceDialog(shell, _folder.getProject(), style); - } else { - dialog = new CommonResourceDialog(shell, _project, style); - } - dialog.setTitle(JSFUICommonPlugin - .getResourceString("DialogField.ResourceButton.SelectFile"));//$NON-NLS-1$ - dialog.setSuffixs(_suffixs); - dialog.setResourceDescription(_resourceDescription); - - if (dialog.open() == Window.OK) { - Object[] result = dialog.getResult(); - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < result.length; i++) { - String newValue = null; - IPath path = ((IFile) result[i]).getLocation(); - - IPath referredPath = null; - if (_referredFile != null) { - referredPath = _referredFile.getLocation(); - } else { - referredPath = _project.getLocation(); - } - if (this._isWebPath) { - IFile selectedFile = ((IFile) result[i]); - newValue = WebrootUtil.getWebPath(selectedFile - .getFullPath()); - } else { - newValue = PathUtil.convertToRelativePath(path.toString(), - referredPath.toString()); - } - buffer.append(newValue); - buffer.append(_separator); - } - if (buffer.length() > 0) { - return buffer.substring(0, buffer.length() - - _separator.length()); - } - - } - return null; - } - - /** - * @return Returns the project. - */ - public IProject getProject() { - return _project; - } - - /** - * @param project - * The project to set. - */ - public void setProject(IProject project) { - this._project = project; - } - - /** - * @return Returns the relative folder. - */ - public IFolder getFolder() { - return _folder; - } - - /** - * @param folder - * The relative folder to set. - */ - public void setFolder(IFolder folder) { - this._folder = folder; - } - - /** - * @return Returns the referredFile. - */ - public IFile getReferredFile() { - return _referredFile; - } - - /** - * @param referredFile - * The referredFile to set. - */ - public void setReferredFile(IFile referredFile) { - this._referredFile = referredFile; - } - - /** - * @return Returns the resourceDescription. - */ - public String getResourceDescription() { - return _resourceDescription; - } - - /** - * @param resourceDescription - * The resourceDescription to set. - */ - public void setResourceDescription(String resourceDescription) { - this._resourceDescription = resourceDescription; - } - - /** - * @return Returns the suffixs. - */ - public String[] getSuffixs() { - return _suffixs; - } - - /** - * @param suffixs - * The suffixs to set. - */ - public void setSuffixs(String[] suffixs) { - this._suffixs = suffixs; - } - - /** - * set some special path to web path instead of relative path - * - * @param isWebPath - */ - public void setWebPath(boolean isWebPath) { - this._isWebPath = isWebPath; - } - - /** - * @return the separator string - */ - public String getSeparator() { - return _separator; - } - - /** - * @param separator - */ - public void setSeparator(String separator) { - this._separator = separator; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java deleted file mode 100644 index f54722a77..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/Separator.java +++ /dev/null @@ -1,128 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * Dialog field describing a separator. - */ -public class Separator extends DialogFieldBase { - - private Label _separator; - - private int _style; - - /** - * Default constructor - */ - public Separator() { - this(SWT.NONE); - } - - /** - * @param style - * of the separator. See <code>Label</code> for possible - * styles. - */ - public Separator(int style) { - _style = style; - } - - // ------- layout helpers - - /** - * Creates the separator and fills it in a MGridLayout. - * @param toolkit - * @param parent - * @param nColumns - * - * @param height - * The heigth of the separator - * @return the controls or empty array - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns, int height) { - assertEnoughColumns(nColumns); - - Control separator = getSeparator(toolkit, parent); - separator.setLayoutData(gridDataForSeperator(nColumns, height)); - - return new Control[] { separator }; - } - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - return doFillIntoGrid(toolkit, parent, nColumns, 4); - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 1; - } - - /** - * @param span - * @param height - * @return the grid data - */ - protected static GridData gridDataForSeperator(int span, int height) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.verticalAlignment = GridData.BEGINNING; - gd.heightHint = height; - gd.horizontalSpan = span; - return gd; - } - - // ------- ui creation - - /** - * Creates or returns the created separator. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> if the widget has - * already been created. - * @return the separator - */ - private Control getSeparator(FormToolkit toolkit, Composite parent) { - if (_separator == null || _separator.isDisposed()) { - assertCompositeNotNull(parent); - if (toolkit != null) { - _separator = toolkit.createSeparator(parent, _style); - } else { - _separator = new Label(parent, _style); - } - } - return _separator; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#handleGrabHorizontal() - */ - public void handleGrabHorizontal() { - // do nothing. - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java deleted file mode 100644 index 420a95093..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/SourceFolderButtonDialogField.java +++ /dev/null @@ -1,340 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaModel; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.ui.JavaElementComparator; -import org.eclipse.jdt.ui.JavaElementLabelProvider; -import org.eclipse.jdt.ui.StandardJavaElementContentProvider; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jface.window.Window; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; - -/** - * This class provides a source folder selection DialogFiled. There are two - * conditions: 1. If you set the IProject instance, the source folder selection - * will only be limited in the specified project 2. If you set null, the source - * folder selection is allowed in all workspaces - * - * - * @author mengbo - * @version 1.5 - */ -public class SourceFolderButtonDialogField extends StringButtonDialogField { - /** Create the logger for this class */ - private static Logger _log = JSFUICommonPlugin - .getLogger(SourceFolderButtonDialogField.class); - - /** - * package fragment root corresponding to the input type (can be null) - */ - private IPackageFragmentRoot _fCurrRoot; - - private IProject _project; - - /** - * @param project - */ - public SourceFolderButtonDialogField(IProject project) { - super(null); - - _project = project; - - setLabelText(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.container.label")); //$NON-NLS-1$ - - setButtonLabel(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.container.button")); //$NON-NLS-1$ - - setStringButtonAdapter(new IStringButtonAdapter() { - public void changeControlPressed(DialogField field) { - containerChangeControlPressed(field); - } - - }); - } - - /** - * @return Returns the project. - */ - public IProject getProject() { - return _project; - } - - /** - * @param project - * The project to set. - */ - public void setProject(IProject project) { - this._project = project; - } - - /** - * @param field - */ - protected void containerChangeControlPressed(DialogField field) { - // take the current jproject as init element of the dialog - IPackageFragmentRoot root = getPackageFragmentRoot(); - root = chooseSourceContainer(root); - if (root != null) { - setPackageFragmentRoot(root, true); - } - } - - /** - * Sets the current source folder (model and text field) to the given - * package fragment root. - * - * @param root - * The new root. - * @param canBeModified - * if <code>false</code> the source folder field can not be - * changed by the user. If <code>true</code> the field is - * editable - */ - public void setPackageFragmentRoot(IPackageFragmentRoot root, - boolean canBeModified) { - _fCurrRoot = root; - String str = (root == null) ? "" : root.getPath().makeRelative().toString(); //$NON-NLS-1$ - setText(str); - setEnabled(canBeModified); - } - - /** - * Returns the <code>IPackageFragmentRoot</code> that corresponds to the - * current value of the source folder field. - * - * @return the IPackageFragmentRoot or <code>null</code> if the current - * source folder value is not a valid package fragment root - * - */ - public IPackageFragmentRoot getPackageFragmentRoot() { - return _fCurrRoot; - } - - /** - * Returns the current text of source folder text field. - * - * @return the text of the source folder text field - */ - public String getPackageFragmentRootText() { - return getText(); - } - - /** - * choose source container dialog - * - * @param initElement - * @return - */ - private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) { - Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, - IJavaProject.class, }; - - TypedElementSelectionValidator validator = new TypedElementSelectionValidator( - acceptedClasses, false) { - // TODO: never used -// public boolean isSelectedValid(Object element) { -// try { -// if (element instanceof IJavaProject) { -// IJavaProject jproject = (IJavaProject) element; -// IPath path = jproject.getProject().getFullPath(); -// return (jproject.findPackageFragmentRoot(path) != null); -// } else if (element instanceof IPackageFragmentRoot) { -// return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); -// } -// return true; -// } catch (JavaModelException e) { -// _log.error("JavaModelException"); // just log, no ui in -// // validation -// } -// return false; -// } - }; - - acceptedClasses = new Class[] { IJavaModel.class, - IPackageFragmentRoot.class, IJavaProject.class, }; - ViewerFilter filter = new TypedViewerFilter(acceptedClasses) { - public boolean select(Viewer viewer, Object parent, Object element) { - if (element instanceof IPackageFragmentRoot) { - try { - return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE); - } catch (JavaModelException e) { - _log.error(e); // just log, no ui - // in validation - return false; - } - } - return super.select(viewer, parent, element); - } - }; - - StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider(); - ILabelProvider labelProvider = new JavaElementLabelProvider( - JavaElementLabelProvider.SHOW_DEFAULT); - ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog( - getShell(), labelProvider, provider); - dialog.setValidator(validator); - dialog.setComparator(new JavaElementComparator()); - // HibernateWizardPage.ChooseSourceContainerDialog.Title = Folder - // Selection - dialog - .setTitle(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.ChooseSourceContainerDialog.Title")); //$NON-NLS-1$ - // HibernateWizardPage.ChooseSourceContainerDialog.Description = Choose - // a folder: - dialog - .setMessage(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.ChooseSourceContainerDialog.Description")); //$NON-NLS-1$ - dialog.addFilter(filter); - if (_project != null) { - dialog.setInput(JavaCore.create(_project)); - } else { - dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace() - .getRoot())); - } - dialog.setInitialSelection(initElement); - - if (dialog.open() == Window.OK) { - Object element = dialog.getFirstResult(); - if (element instanceof IJavaProject) { - IJavaProject jproject = (IJavaProject) element; - return jproject.getPackageFragmentRoot(jproject.getProject()); - } else if (element instanceof IPackageFragmentRoot) { - return (IPackageFragmentRoot) element; - } - return null; - } - return null; - } - - /** - * This method updates the model and returns an error status. The underlying - * model is only valid if the returned status is OK. - * - * @return the model's error status - */ - public IStatus getChangedStatus() { - StatusInfo status = new StatusInfo(); - - _fCurrRoot = null; - String str = getPackageFragmentRootText(); - if (str.length() == 0) { - // SourceFolderButtonDialogField.error.EnterContainerName = Folder - // name is empty. - status.setError(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.error.EnterContainerName")); //$NON-NLS-1$ - return status; - } - IPath path = new Path(str); - IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember( - path); - if (res != null) { - int resType = res.getType(); - if (resType == IResource.PROJECT || resType == IResource.FOLDER) { - IProject proj = res.getProject(); - if (!proj.isOpen()) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ProjectClosed", proj.getFullPath().toString())); //$NON-NLS-1$ - return status; - } - if (_project != null && proj != _project) { - // HibernateWizardPage.error.NotSameProject = The project - // should be \''{0}\''. - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.NotSameProject", _project.getName())); //$NON-NLS-1$ - return status; - } - IJavaProject jproject = JavaCore.create(proj); - _fCurrRoot = jproject.getPackageFragmentRoot(res); - if (res.exists()) { - try { - if (!proj.hasNature(JavaCore.NATURE_ID)) { - if (resType == IResource.PROJECT) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$ - } else { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotInAJavaProject", proj.getName())); //$NON-NLS-1$ - } - return status; - } - } catch (CoreException e) { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotAJavaProject", proj.getName())); //$NON-NLS-1$ - } - if (!jproject.isOnClasspath(_fCurrRoot)) { - status - .setWarning(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.warning.NotOnClassPath", str)); //$NON-NLS-1$ - } - if (_fCurrRoot.isArchive()) { - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ContainerIsBinary", str)); //$NON-NLS-1$ - return status; - } - } - return status; - } - status.setError(DialogFieldResources.getInstance().getString( - "SourceFolderButtonDialogField.error.NotAFolder", str)); //$NON-NLS-1$ - return status; - } - status - .setError(DialogFieldResources - .getInstance() - .getString( - "SourceFolderButtonDialogField.error.ContainerDoesNotExist", str)); //$NON-NLS-1$ - return status; - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusInfo.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusInfo.java deleted file mode 100644 index 8a8c9b75b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusInfo.java +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; - -/** - * A settable IStatus. Can be an error, warning, info or ok. For error, info and - * warning states, a message describes the problem. - * - * TODO: couldn't have sub-classed Status? - * - * @author mengbo - * @version 1.5 - */ -/*package*/ class StatusInfo implements IStatus { - - /** - * a default status info for IStatus.OK - */ - public static final IStatus OK_STATUS = new StatusInfo(); - - private String fStatusMessage; - - private int fSeverity; - - /** - * Creates a status set to OK (no message) - */ - public StatusInfo() { - this(OK, null); - } - - /** - * Creates a status . - * - * @param severity - * The status severity: ERROR, WARNING, INFO and OK. - * @param message - * The message of the status. Applies only for ERROR, WARNING and - * INFO. - */ - public StatusInfo(int severity, String message) { - fStatusMessage = message; - fSeverity = severity; - } - - /** - * Returns if the status' severity is OK. - */ - public boolean isOK() { - return fSeverity == IStatus.OK; - } - - /** - * Returns if the status' severity is WARNING. - * @return true if severity is IStatus.WARNING - */ - public boolean isWarning() { - return fSeverity == IStatus.WARNING; - } - - /** - * Returns if the status' severity is INFO. - * @return true if severity is INFO - */ - public boolean isInfo() { - return fSeverity == IStatus.INFO; - } - - /** - * Returns if the status' severity is ERROR. - * @return true if severity is error - */ - public boolean isError() { - return fSeverity == IStatus.ERROR; - } - - /** - * @see IStatus#getMessage - */ - public String getMessage() { - return fStatusMessage; - } - - /** - * Sets the status to ERROR. - * - * @param errorMessage - * The error message (can be empty, but not null) - */ - public void setError(String errorMessage) { - Assert.isNotNull(errorMessage); - fStatusMessage = errorMessage; - fSeverity = IStatus.ERROR; - } - - /** - * Sets the status to WARNING. - * - * @param warningMessage - * The warning message (can be empty, but not null) - */ - public void setWarning(String warningMessage) { - Assert.isNotNull(warningMessage); - fStatusMessage = warningMessage; - fSeverity = IStatus.WARNING; - } - - /** - * Sets the status to INFO. - * - * @param infoMessage - * The info message (can be empty, but not null) - */ - public void setInfo(String infoMessage) { - Assert.isNotNull(infoMessage); - fStatusMessage = infoMessage; - fSeverity = IStatus.INFO; - } - - /** - * Sets the status to OK. - */ - public void setOK() { - fStatusMessage = null; - fSeverity = IStatus.OK; - } - - /* - * @see IStatus#matches(int) - */ - public boolean matches(int severityMask) { - return (fSeverity & severityMask) != 0; - } - - /** - * Returns always <code>false</code>. - * - * @see IStatus#isMultiStatus() - */ - public boolean isMultiStatus() { - return false; - } - - /* - * @see IStatus#getSeverity() - */ - public int getSeverity() { - return fSeverity; - } - - /* - * @see IStatus#getPlugin() - */ - public String getPlugin() { - return JSFUICommonPlugin.getPluginId(); - } - - /** - * Returns always <code>null</code>. - * - * @see IStatus#getException() - */ - public Throwable getException() { - return null; - } - - /** - * Returns always the error severity. - * - * @see IStatus#getCode() - */ - public int getCode() { - return fSeverity; - } - - /** - * Returns always <code>null</code>. - * - * @see IStatus#getChildren() - */ - public IStatus[] getChildren() { - return new IStatus[0]; - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusUtil.java deleted file mode 100644 index 22fe6d866..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StatusUtil.java +++ /dev/null @@ -1,114 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.dialogs.DialogPage; - -/** - * copied from org.eclipse.jdt.internal.dialogs. Enhanced to support null status - * as parameter - * - * A utility class to work with IStatus. - */ -public class StatusUtil { - - /** - * Compares two instances of <code>IStatus</code>. The more severe is - * returned: An error is more severe than a warning, and a warning is more - * severe than ok. If the two stati have the same severity, the second is - * returned. - * @param s1 - * @param s2 - * - * @return Could be null. - */ - public static IStatus getMoreSevere(IStatus s1, IStatus s2) { - if (s1 == null && s2 == null) { - return null; - } else if (s1 == null) { - return s2; - } else if (s2 == null) { - return s1; - } else if (s1.getSeverity() > s2.getSeverity()) { - return s1; - } else { - return s2; - } - } - - /** - * Finds the most severe status from a array of stati. An error is more - * severe than a warning, and a warning is more severe than ok. - * @param status - * - * @return could be null - */ - public static IStatus getMostSevere(IStatus[] status) { - if (status == null) - return null; - IStatus max = null; - for (int i = 0; i < status.length; i++) { - IStatus curr = status[i]; - if (curr == null) - continue; - - if (curr.matches(IStatus.ERROR)) { - return curr; - } - if (max == null || curr.getSeverity() > max.getSeverity()) { - max = curr; - } - } - if (max != null) - { - return max; - } - - return null; - } - - /** - * Applies the status to the status line of a dialog page. - * @param page - * @param status - */ - public static void applyToStatusLine(DialogPage page, IStatus status) { - if (status == null) { - page.setMessage(null); - page.setErrorMessage(null); - } else { - String message = status.getMessage(); - switch (status.getSeverity()) { - case IStatus.OK: - page.setMessage(message, DialogPage.NONE); - page.setErrorMessage(null); - break; - case IStatus.WARNING: - page.setMessage(message, DialogPage.WARNING); - page.setErrorMessage(null); - break; - case IStatus.INFO: - page.setMessage(message, DialogPage.INFORMATION); - page.setErrorMessage(null); - break; - default: - if (message.length() == 0) { - message = null; - } - page.setMessage(null); - page.setErrorMessage(message); - break; - } - } - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java deleted file mode 100644 index eebc9e5c4..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringButtonDialogField.java +++ /dev/null @@ -1,186 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * Dialog field containing a label, text control and a button control. - */ -public class StringButtonDialogField extends StringDialogField { - private Button _browseButton; - - private String _browseButtonLabel; - - private IStringButtonAdapter _stringButtonAdapter; - - private boolean _buttonEnabled; - - /** - * @param adapter - */ - public StringButtonDialogField(IStringButtonAdapter adapter) { - _stringButtonAdapter = adapter; - _browseButtonLabel = JSFUICommonPlugin - .getResourceString("DialogField.Browse"); //$NON-NLS-1$ - _buttonEnabled = true; - } - - /** - * Sets the label of the button. - * @param label - */ - public void setButtonLabel(String label) { - _browseButtonLabel = label; - } - - // ------ adapter communication - - /** - * Programmatical pressing of the button - */ - public void changeControlPressed() { - _stringButtonAdapter.changeControlPressed(this); - } - - // ------- layout helpers - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(toolkit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(1)); - - Text text = getTextControl(toolkit, parent); - text.setLayoutData(gridDataForText(nColumns - 3)); - Button button = getChangeControl(toolkit, parent); - button.setLayoutData(gridDataForButton(toolkit, button, text, 1)); - - return new Control[] { requiredLabel, label, text, button }; - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 4; - } - - /** - * @param toolkit - * @param button - * @param text - * @param span - * @return the grid data for the button - */ - protected static GridData gridDataForButton(FormToolkit toolkit, - Button button, Text text, int span) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - // gd.heightHint = SWTUtil.getButtonHeightHint(button); - gd.widthHint = LayoutUtil.getButtonWidthHint(button); - gd.heightHint = LayoutUtil.getButtonHeightHint(toolkit, text); - return gd; - } - - // ------- ui creation - - /** - * Creates or returns the created buttom widget. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> if the widget has - * already been created. - * @return the button - */ - public Button getChangeControl(FormToolkit toolkit, Composite parent) { - if (_browseButton == null || _browseButton.isDisposed()) { - assertCompositeNotNull(parent); - if (toolkit != null) { - _browseButton = toolkit.createButton(parent, - _browseButtonLabel, SWT.PUSH); - } else { - _browseButton = new Button(parent, SWT.PUSH); - _browseButton.setText(_browseButtonLabel); - } - _browseButton.setEnabled(isEnabled() && _buttonEnabled); - _browseButton.addSelectionListener(new SelectionListener() { - public void widgetDefaultSelected(SelectionEvent e) { - changeControlPressed(); - } - - public void widgetSelected(SelectionEvent e) { - changeControlPressed(); - } - }); - - } - return _browseButton; - } - - // ------ enable / disable management - - /** - * Sets the enable state of the button. - * @param enable - */ - public void enableButton(boolean enable) { - if (isOkToUse(_browseButton)) { - _browseButton.setEnabled(isEnabled() && enable); - } - _buttonEnabled = enable; - } - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_browseButton)) { - _browseButton.setEnabled(isEnabled() && _buttonEnabled); - } - } - - /** - * @return Returns the _stringButtonAdapter. - */ - public IStringButtonAdapter getStringButtonAdapter() { - return _stringButtonAdapter; - } - - /** - * @param buttonAdapter - * The _stringButtonAdapter to set. - */ - public void setStringButtonAdapter(IStringButtonAdapter buttonAdapter) { - _stringButtonAdapter = buttonAdapter; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java deleted file mode 100644 index bf334a54c..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StringDialogField.java +++ /dev/null @@ -1,291 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.KeyAdapter; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * Dialog field containing a label and a text control. - */ -public class StringDialogField extends DialogFieldBase implements - ISupportTextValue { - final static private int TEXT_WIDTH_HINT = 10; - - private String _text; - - private Text _textControl; - - private ModifyListener _modifyListener; - - private int _numRows; - - /** - * whether there is change in the UI but not fire applied event yet. - */ - private boolean _pending = false; - - /** - * default constructor - * numRows == 1 - */ - public StringDialogField() { - this(1); - _text = ""; //$NON-NLS-1$ - } - - /** - * @param numRows - */ - public StringDialogField(int numRows) { - super(); - _text = ""; //$NON-NLS-1$ - _numRows = numRows; - } - - // ------- layout helpers - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit kit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(kit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(kit, parent); - label.setLayoutData(gridDataForLabel(1)); - - Text text = getTextControl(kit, parent); - int heightHint = -1; - if (_numRows > 1) { - heightHint = getDialogUnits(parent).getHeight() * _numRows; - } - text.setLayoutData(gridDataForText(nColumns - 2, heightHint)); - - return new Control[] { requiredLabel, label, text }; - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 3; - } - - protected static GridData gridDataForLabel(int span) { - GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); - gd.horizontalSpan = span; - return gd; - } - - /** - * @param span - * @param heightHint - * @return the grid data for text - */ - protected static GridData gridDataForText(int span, int heightHint) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.heightHint = heightHint; - gd.horizontalSpan = span; - gd.widthHint = TEXT_WIDTH_HINT; - return gd; - } - - /** - * @param span - * @return the grid data for text - */ - protected static GridData gridDataForText(int span) { - GridData gd = gridDataForText(span, -1); - return gd; - } - - // ------- focus methods - - /* - * @see DialogField#setFocus - */ - public boolean setFocus() { - if (isOkToUse(_textControl)) { - _textControl.setFocus(); - _textControl.setSelection(0, _textControl.getText().length()); - } - return true; - } - - // ------- ui creation - - /** - * Creates or returns the created text control. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> when the widget - * has already been created. - * @return the text control - */ - public Text getTextControl(FormToolkit toolkit, Composite parent) { - if (_textControl == null || _textControl.isDisposed()) { - assertCompositeNotNull(parent); - _modifyListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - doModifyText(e); - } - }; - - if (toolkit != null) { - if (_numRows <= 1) { - _textControl = toolkit.createText(parent, ""); //$NON-NLS-1$ - } else { - _textControl = toolkit.createText(parent, "", SWT.V_SCROLL); //$NON-NLS-1$ - } - } else { - if (_numRows <= 1) { - - _textControl = new Text(parent, SWT.SINGLE | SWT.BORDER); - } else { - _textControl = new Text(parent, SWT.V_SCROLL | SWT.WRAP - | SWT.BORDER); - } - } - - _textControl.setText(_text); - _textControl.setFont(parent.getFont()); - _textControl.addModifyListener(_modifyListener); - _textControl.addFocusListener(new FocusAdapter() { - - public void focusLost(FocusEvent e) { - doFocusLost(e); - } - - }); - _textControl.addKeyListener(new KeyAdapter() { - public void keyReleased(KeyEvent e) { - doKeyReleased(e); - } - }); - - _textControl.setEnabled(isEnabled()); - - _textControl.setToolTipText(getToolTip()); - } - return _textControl; - } - - /** - * @param e - */ - protected void doKeyReleased(KeyEvent e) { - if (e.character == '\r') { - // commit value - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - } - - /** - * @param e - */ - protected void doFocusLost(FocusEvent e) { - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - - /** - * some get changed in the Text. As in <code>setText</code> and - * <code>setTextWithoutUpdate</code> we removed the listener, so this must - * be user typing in the text field. - * - * @param e - */ - private void doModifyText(ModifyEvent e) { - if (isOkToUse(_textControl)) { - _text = _textControl.getText(); - } - _pending = true; - dialogFieldChanged(); - } - - // ------ enable / disable management - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_textControl)) { - _textControl.setEnabled(isEnabled()); - } - } - - // ------ text access - - /** - * Gets the text. Can not be <code>null</code> - */ - public String getText() { - return _text; - } - - /** - * Sets the text. Triggers a dialog-changed event. - */ - public void setText(String text) { - setTextWithoutUpdate(text); - dialogFieldChangedAndApplied(); - } - - /** - * Sets the text without triggering a dialog-changed event. - */ - public void setTextWithoutUpdate(String text) { - // reset _pending state. - _pending = false; - - if (text == null) - text = ""; //$NON-NLS-1$ - _text = text; - if (isOkToUse(_textControl)) { - _textControl.removeModifyListener(_modifyListener); - _textControl.setText(text); - _textControl.addModifyListener(_modifyListener); - } - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#handleGrabHorizontal() - */ - public void handleGrabHorizontal() { - LayoutUtil.setGrabHorizontal(_textControl, true); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java deleted file mode 100644 index 93c93320b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/StyleComboDialogField.java +++ /dev/null @@ -1,398 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.Map; -import java.util.TreeMap; -import java.util.Map.Entry; - -import org.eclipse.jst.jsf.common.ui.internal.utils.StyleCombo; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.forms.FormColors; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * A dialog field for style combos - * - */ -public class StyleComboDialogField extends DialogFieldBase implements - ISupportTextValue { - final static private int WIDTH_HINT = 10; - - private String _text; - - private int _selectionIndex; - - private String[] _items; - - private StyleCombo _comboControl; - - private ModifyListener _modifyListener; - - private int _flags; - - private boolean _pending = false; - - private Map _entryMap; - - private String _defaultValue; - - - /** - * @param defaultValue - */ - public void setDefaultValue(String defaultValue) { - this._defaultValue = defaultValue; - if (_comboControl != null && ! _comboControl.isDisposed()) - _comboControl.setDefaultValue(_defaultValue); - } - - /** - * @param flags - */ - public StyleComboDialogField(int flags) { - super(); - _text = ""; //$NON-NLS-1$ - _items = new String[0]; - _flags = flags; - _selectionIndex = -1; - } - - // ------- layout helpers - - - /* - * @see DialogField#doFillIntoGrid - */ - public Control[] doFillIntoGrid(FormToolkit toolkit, Composite parent, - int nColumns) { - assertEnoughColumns(nColumns); - - Control requiredLabel = getRequiredLabelControl(toolkit, parent); - requiredLabel.setLayoutData(gridDataForLabel(1)); - - Control label = getLabelControl(toolkit, parent); - label.setLayoutData(gridDataForLabel(1)); - - StyleCombo combo = getComboControl(toolkit, parent); - combo.setLayoutData(gridDataForCombo(nColumns - 2)); - - return new Control[] { requiredLabel, label, combo }; - } - - /* - * @see DialogField#getNumberOfControls - */ - public int getNumberOfControls() { - return 3; - } - - /** - * @param span - * @return the grid data for the combo - */ - protected static GridData gridDataForCombo(int span) { - GridData gd = new GridData(); - gd.horizontalAlignment = GridData.FILL; - gd.grabExcessHorizontalSpace = false; - gd.horizontalSpan = span; - gd.widthHint = WIDTH_HINT; - return gd; - } - - // ------- focus methods - - /* - * @see DialogField#setFocus - */ - public boolean setFocus() { - if (isOkToUse(_comboControl)) { - _comboControl.setFocus(); - } - return true; - } - - // ------- ui creation - - /** - * Creates or returns the created combo control. - * @param toolkit - * - * @param parent - * The parent composite or <code>null</code> when the widget - * has already been created. - * @return the combo control - */ - public StyleCombo getComboControl(FormToolkit toolkit, - final Composite parent) { - if (_comboControl == null || _comboControl.isDisposed()) { - assertCompositeNotNull(parent); - _modifyListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - doModifyText(e); - } - }; - SelectionListener selectionListener = new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - doSelectionChanged(e); - } - - public void widgetDefaultSelected(SelectionEvent e) { - handleDefaultSelection(e); - } - }; - - if (toolkit != null) { - _comboControl = new StyleCombo(parent, _flags); - final FormColors colors = new FormColors(parent.getDisplay()); - parent.addPaintListener(new PaintListener() { - - public void paintControl(PaintEvent event) { - Composite composite = (Composite) event.widget; - Control[] children = composite.getChildren(); - for (int i = 0; i < children.length; i++) { - Control c = children[i]; - if (!(c instanceof StyleCombo) || !c.isVisible()) { - continue; - } - Rectangle b = c.getBounds(); - GC gc = event.gc; - gc.setForeground(colors.getBorderColor()); - gc.drawRectangle(b.x - 1, b.y - 1, b.width + 1, - b.height + 1); - } - } - }); - - // when the parent is disposed, the colors should no - // no longer be needed. - parent.addDisposeListener(new DisposeListener() - { - public void widgetDisposed(DisposeEvent e) { - colors.dispose(); - } - } - ); - toolkit.adapt(_comboControl); - } else { - _comboControl = new StyleCombo(parent, _flags | SWT.BORDER); - _comboControl.setBackground(Display.getCurrent() - .getSystemColor(SWT.COLOR_LIST_BACKGROUND)); - } - - // moved up due to 1GEUNW2 - _comboControl.setItems(_items); - _comboControl.setDefaultValue(_defaultValue); - if (_selectionIndex != -1) { - _comboControl.select(_selectionIndex); - } else { - _comboControl.setText(_text); - } - _comboControl.setFont(parent.getFont()); - _comboControl.addModifyListener(_modifyListener); - _comboControl.addSelectionListener(selectionListener); - _comboControl.addFocusListener(new FocusAdapter() { - public void focusLost(FocusEvent e) { - doFocusLost(e); - } - }); - _comboControl.setEnabled(isEnabled()); - _comboControl.setToolTipText(getToolTip()); - } - return _comboControl; - } - - /** - * @param e - */ - protected void handleDefaultSelection(SelectionEvent e) { - // commit value - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - - /** - * @param e - */ - protected void doFocusLost(FocusEvent e) { - if (_pending) { - _pending = false; - dialogFieldApplied(); - } - } - - private void doModifyText(ModifyEvent e) { - if (isOkToUse(_comboControl)) { - _text = getEntryKey(_comboControl.getText()); - _selectionIndex = _comboControl.getSelectionIndex(); - } - _pending = true; - dialogFieldChanged(); - } - - private void doSelectionChanged(SelectionEvent e) { - if (isOkToUse(_comboControl)) { - _items = _comboControl.getItems(); - _text = getEntryKey(_comboControl.getText()); - _selectionIndex = _comboControl.getSelectionIndex(); - } - _pending = false; - dialogFieldChangedAndApplied(); - } - - // ------ enable / disable management - - /* - * @see DialogField#updateEnableState - */ - protected void updateEnableState() { - super.updateEnableState(); - if (isOkToUse(_comboControl)) { - _comboControl.setEnabled(isEnabled()); - } - } - - // ------ text access - - /** - * Sets the combo items. Triggers a dialog-changed event. - * @param items - */ - public void setItems(String[] items) { - _items = items; - if (isOkToUse(_comboControl)) { - _comboControl.setItems(items); - } - _pending = false; - // dialogFieldChangedAndApplied(); - } - - /** - * @param map - */ - public void setEntryMap(Map map) { - this._entryMap = map; - if (_entryMap == null) { - _entryMap = new TreeMap(); - } - Entry[] entries = (Entry[]) _entryMap.entrySet().toArray(new Entry[0]); - String[] items = new String[entries.length]; - for (int i = 0; i < entries.length; i++) { - items[i] = entries[i].getValue().toString(); - } - setItems(items); - } - - /** - * Gets the text. - */ - public String getText() { - return _text; - } - - /** - * Sets the text. Triggers a dialog-changed event. - */ - public void setText(String text) { - setTextWithoutUpdate(text); - _pending = false; - dialogFieldChangedAndApplied(); - } - - /** - * Selects an item. - * @param index - */ - public void selectItem(int index) { - if (isOkToUse(_comboControl)) { - _comboControl.select(index); - } else { - if (index >= 0 && index < _items.length) { - _text = getEntryKey(_items[index]); - _selectionIndex = index; - } - } - dialogFieldChangedAndApplied(); - } - - /** - * @return the selection index - */ - public int getSelectionIndex() { - return _selectionIndex; - } - - /** - * Sets the text without triggering a dialog-changed event. - */ - public void setTextWithoutUpdate(String text) { - _pending = false; - if (text == null) { - text = "";//$NON-NLS-1$ - } - _text = text; - if (isOkToUse(_comboControl)) { - _comboControl.removeModifyListener(_modifyListener); - _comboControl.setText(getEntryValue(text)); - _comboControl.addModifyListener(_modifyListener); - } - } - - private String getEntryValue(String key) { - if (_entryMap == null || !_entryMap.containsKey(key)) { - return key; - } - return _entryMap.get(key).toString(); - } - - private String getEntryKey(String value) { - if (_entryMap == null || !_entryMap.containsValue(value)) { - return value; - } - - Entry[] entries = (Entry[]) _entryMap.entrySet().toArray(new Entry[0]); - for (int i = 0; i < entries.length; i++) { - if (entries[i].getValue() == value - || (value != null && value.equals(entries[i].getValue()))) { - return entries[i].getKey().toString(); - } - } - return value; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.jsf.common.ui.internal.dialogfield.DialogField#handleGrabHorizontal() - */ - public void handleGrabHorizontal() { - LayoutUtil.setGrabHorizontal(_comboControl, true); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedElementSelectionValidator.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedElementSelectionValidator.java deleted file mode 100644 index 8d0e09101..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedElementSelectionValidator.java +++ /dev/null @@ -1,110 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - -import java.util.Collection; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.ui.dialogs.ISelectionStatusValidator; - -/** - * Implementation of a <code>ISelectionValidator</code> to validate the type - * of an element. Empty selections are not accepted. - * - * @author mengbo - * @version 1.5 - */ -/*package*/ class TypedElementSelectionValidator implements - ISelectionStatusValidator { - - private IStatus _fgErrorStatus = new StatusInfo(IStatus.ERROR, ""); //$NON-NLS-1$ - - private IStatus _fgOKStatus = new StatusInfo(); - - private Class[] _fAcceptedTypes; - - private boolean _fAllowMultipleSelection; - - private Collection _fRejectedElements; - - /** - * @param acceptedTypes - * The types accepted by the validator - * @param allowMultipleSelection - * If set to <code>true</code>, the validator allows multiple - * selection. - */ - public TypedElementSelectionValidator(Class[] acceptedTypes, - boolean allowMultipleSelection) { - this(acceptedTypes, allowMultipleSelection, null); - } - - /** - * @param acceptedTypes - * The types accepted by the validator - * @param allowMultipleSelection - * If set to <code>true</code>, the validator allows multiple - * selection. - * @param rejectedElements - * A list of elements that are not accepted - */ - public TypedElementSelectionValidator(Class[] acceptedTypes, - boolean allowMultipleSelection, Collection rejectedElements) { - Assert.isNotNull(acceptedTypes); - _fAcceptedTypes = acceptedTypes; - _fAllowMultipleSelection = allowMultipleSelection; - _fRejectedElements = rejectedElements; - } - - /* - * @see org.eclipse.ui.dialogs.ISelectionValidator#isValid(java.lang.Object) - */ - public IStatus validate(Object[] elements) { - if (isValid(elements)) { - return _fgOKStatus; - } - return _fgErrorStatus; - } - - private boolean isOfAcceptedType(Object o) { - for (int i = 0; i < _fAcceptedTypes.length; i++) { - if (_fAcceptedTypes[i].isInstance(o)) { - return true; - } - } - return false; - } - - private boolean isRejectedElement(Object elem) { - return (_fRejectedElements != null) - && _fRejectedElements.contains(elem); - } - - private boolean isValid(Object[] selection) { - if (selection.length == 0) { - return false; - } - - if (!_fAllowMultipleSelection && selection.length != 1) { - return false; - } - - for (int i = 0; i < selection.length; i++) { - Object o = selection[i]; - if (!isOfAcceptedType(o) || isRejectedElement(o)) { - return false; - } - } - return true; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedViewerFilter.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedViewerFilter.java deleted file mode 100644 index 52ecb6a2a..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogfield/TypedViewerFilter.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogfield; - - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; - -/** - * Viewer filter used in selection dialogs. - * - * @author mengbo - * @version 1.5 - */ -/*package*/ class TypedViewerFilter extends ViewerFilter { - - private Class[] _fAcceptedTypes; - - private Object[] _fRejectedElements; - - /** - * Creates a filter that only allows elements of gives types. - * - * @param acceptedTypes - * The types of accepted elements - */ - public TypedViewerFilter(Class[] acceptedTypes) { - this(acceptedTypes, null); - } - - /** - * Creates a filter that only allows elements of gives types, but not from a - * list of rejected elements. - * - * @param acceptedTypes - * Accepted elements must be of this types - * @param rejectedElements - * Element equals to the rejected elements are filtered out - */ - public TypedViewerFilter(Class[] acceptedTypes, Object[] rejectedElements) { - Assert.isNotNull(acceptedTypes); - _fAcceptedTypes = acceptedTypes; - _fRejectedElements = rejectedElements; - } - - /** - * @see ViewerFilter#select(org.eclipse.jface.viewers.Viewer, - * java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - if (_fRejectedElements != null) { - for (int i = 0; i < _fRejectedElements.length; i++) { - if (element.equals(_fRejectedElements[i])) { - return false; - } - } - } - for (int i = 0; i < _fAcceptedTypes.length; i++) { - if (_fAcceptedTypes[i].isInstance(element)) { - return true; - } - } - return false; - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonResourceDialog.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonResourceDialog.java deleted file mode 100644 index debc2f996..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonResourceDialog.java +++ /dev/null @@ -1,368 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogs; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.jst.jsf.common.ui.internal.utils.WebrootUtil; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.model.WorkbenchLabelProvider; -import org.eclipse.ui.views.navigator.ResourceComparator; - -/** - * This dialog shows IFile type resources within a IProject domain for - * selection. The client can prvide the suffixs of files to filter when - * candidates are shown on the tree. - * - * The usage: Shell shell = new Shell(); IProject project = getProject(); - * CommonResourceDialog dlg = new CommonResourceDialog(shell, project); - * dlg.setResourceDescription("image"); dlg.setSuffixs(new - * String[]{"bmp","jpg","gif"}); if(dlg.open() == Window.OK) { IFile - * selectedFile = (IFile)dlg.getResult()[0]; } - * - * Note: In code above, what you get is an absolute resource path. You can use - * <code>org.eclipse.wst.sse.core.util.PathHelper.convertToRelative(String input, String base)</code> - * to convert a absolute resource path to a relative path based on one path. - * - * @author mengbo - */ -public class CommonResourceDialog extends TreeViewerSelectionDialog { - private static Logger _log = JSFUICommonPlugin - .getLogger(CommonResourceDialog.class); - - // private static final String STATUS_MESSAGE_0 = CommonPlugin - // .getResourceString("Dialog.CommonResourceDialog.StatusMessage0"); - // //$NON-NLS-1$ - - private IProject _project = null; - - private String _suffixs[] = null; - - private CommonResourceFilter _filter = null; - - // The resource type resourceDescription, such as "image", "jsp", "java - // class" etc. - private String _resourceDescription = null; - - private IFolder _folder; - - // The content provider - class ProjectFileDialogContentProvider implements ITreeContentProvider { - /** - * The visual part that is using this content provider is about to be - * disposed. Deallocate all allocated SWT resources. - */ - public void dispose() { - // nothing to dispose - } - - /** - * @see ITreeContentProvider#getChildren - */ - public Object[] getChildren(Object element) { - if (element instanceof Object[]) { - return (Object[]) element; - } else if (element instanceof IContainer) { - IContainer container = (IContainer) element; - if (container.isAccessible()) { - try { - return container.members(); - } catch (CoreException e) { - _log.error( - "Error.ProjectFileDialogContentProvider.0", e); //$NON-NLS-1$ - } - } - - } - return new Object[0]; - } - - /** - * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object) - */ - public Object[] getElements(Object element) { - return getChildren(element); - } - - /** - * @see ITreeContentProvider#getParent - */ - public Object getParent(Object element) { - if (element instanceof IResource) { - return ((IResource) element).getParent(); - } - return null; - } - - /** - * @see ITreeContentProvider#hasChildren - */ - public boolean hasChildren(Object element) { - return getChildren(element).length > 0; - } - - /** - * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object) - */ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // no viewer change support required - } - - } - - // The default resource filter - class CommonResourceFilter extends ViewerFilter { - private String _filterSuffixs[] = null; - - /** - * @return Returns the _suffixs. - */ - public String[] getSuffixs() { - return _filterSuffixs; - } - - /** - * @param _suffixs - * The _suffixs to set. - */ - public void setSuffixs(String[] _suffixs) { - this._filterSuffixs = _suffixs; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, - * java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, - Object element) { - if (element instanceof IFile) { - IFile file = (IFile) element; - if (!WebrootUtil.isUnderWebContentFolder(file)) { - return false; - } - if (isSuffixBlank()) { - return true; - } - if (file.getFileExtension() != null) { - if (Arrays.asList(_filterSuffixs).contains( - file.getFileExtension().toLowerCase())) { - return true; - } - } - } else if (element instanceof IContainer) { - if (!((IContainer) element).isAccessible()) { - return false; - } - if (element instanceof IProject) { - return true; - } else if (element instanceof IFolder) { - IContainer container = (IContainer) element; - try { - IResource[] members = container.members(); - for (int i = 0; i < members.length; i++) { - if (select(viewer, members[i].getParent(), - members[i])) { - return true; - } - } - } catch (CoreException e) { - _log.error( - "Error.ProjectFileDialogContentProvider.0", e); //$NON-NLS-1$ - return false; - } - } - } - return false; - } - - } - - /** - * This is a dialog for common resource selection, the resouce supported - * include IFolder, IProject, IFile, user can provide - * - * @param parentShell - * @param project - * @param style - */ - public CommonResourceDialog(Shell parentShell, IProject project, int style) { - super(parentShell, "", style); //$NON-NLS-1$ - if (project == null) { - throw new IllegalArgumentException( - "Argument(project) cannot be null"); //$NON-NLS-1$ - } - _project = project; - setContentProvider(new ProjectFileDialogContentProvider()); - setLabelProvider(WorkbenchLabelProvider - .getDecoratingWorkbenchLabelProvider()); - _filter = new CommonResourceFilter(); - setFilter(_filter); - setViewerComparator(new ResourceComparator(ResourceComparator.TYPE)); - _project = project; - setStatusMessage(getStatusMessage()); - } - - /** - * Same as CommonResourceDialog(parentShell, project, SWT.NONE) - * - * @param parentShell - * @param project - */ - public CommonResourceDialog(Shell parentShell, IProject project) { - this(parentShell, project, SWT.NONE); - } - - private String getStatusMessage() { - if (_resourceDescription == null) { - return ""; //$NON-NLS-1$ - } - return _resourceDescription; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.pagedesigner.ui.common.SelectionTreeViewerDialog#findInputElement() - */ - protected Object findInputElement() { - if (_folder != null) { - return new Object[] { _folder, }; - } - return new Object[] { _project, }; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.pagedesigner.ui.common.SelectionTreeViewerDialog#isValidSelection(java.lang.Object) - */ - protected boolean isValidSelection(Object selection) { - if (selection instanceof Object[]) { - for (int i = 0, n = ((Object[]) selection).length; i < n; i++) { - if (isValidElement(((Object[]) selection)[i]) == true) { - return true; - } - } - return false; - } - return isValidElement(selection); - } - - private boolean isValidElement(Object selection) { - if ((selection instanceof IFile)) { - // Null means no filter is set - if (isSuffixBlank()) { - return true; - } - // The extension is supported? - else if (_suffixs != null - && Arrays.asList(_suffixs).contains( - ((IFile) selection).getFileExtension() - .toLowerCase())) { - return true; - } - } - // None of above conditions, invalid. - return false; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.dialogs.SelectionDialog#getResult() - */ - public Object[] getResult() { - Object[] objects = super.getResult(); - if (objects == null || objects.length == 0) { - return null; - } - List list = new ArrayList(); - for (int i = 0; i < objects.length; i++) { - if (objects[i] instanceof IFile) { - list.add(objects[i]); - } - } - return list.toArray(); - } - - /** - * @param suffixs - * The suffixs to set. - */ - public void setSuffixs(String[] suffixs) { - this._suffixs = convertTolowercase(suffixs); - _filter.setSuffixs(_suffixs); - setStatusMessage(getStatusMessage()); - } - - private String[] convertTolowercase(String[] suffixs) { - if (suffixs != null) { - String[] newSuffixs = new String[suffixs.length]; - for (int i = 0; i < suffixs.length; i++) { - newSuffixs[i] = suffixs[i].toLowerCase(); - } - return newSuffixs; - } - return null; - } - - /** - * @return Returns the sourceDescription. - */ - public String getResourceDescription() { - return _resourceDescription; - } - - /** - * @param sourceDescription - * The sourceDescription to set. - */ - public void setResourceDescription(String sourceDescription) { - this._resourceDescription = sourceDescription; - setStatusMessage(getStatusMessage()); - } - - private boolean isSuffixBlank() { - boolean isSuffixBlank = false; - if (_suffixs == null) { - isSuffixBlank = true; - } else { - int count = 0; - for (int i = 0, size = _suffixs.length; i < size; i++) { - if (_suffixs[i] != null && !"".equals(_suffixs[i])) { //$NON-NLS-1$ - count++; - break; - } - } - if (count == 0) { - isSuffixBlank = true; - } - } - return isSuffixBlank; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonWizardDialog.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonWizardDialog.java deleted file mode 100644 index 3fd719c77..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/CommonWizardDialog.java +++ /dev/null @@ -1,44 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogs; - -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Shell; - -/** - * Wizard Dialog with a Finish set to OK if no previous - * or next buttons are needed - * - */ -public class CommonWizardDialog extends WizardDialog { - - /** - * @param parentShell - * @param newWizard - */ - public CommonWizardDialog(Shell parentShell, IWizard newWizard) { - super(parentShell, newWizard); - } - - protected void createButtonsForButtonBar(Composite parent) { - super.createButtonsForButtonBar(parent); - - IWizard wizard = getWizard(); - if (!wizard.needsPreviousAndNextButtons()) { - getButton(IDialogConstants.FINISH_ID).setText( - IDialogConstants.OK_LABEL); - } - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/ResourceOnClasspathDialog.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/ResourceOnClasspathDialog.java deleted file mode 100644 index 934957d96..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/ResourceOnClasspathDialog.java +++ /dev/null @@ -1,254 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogs; - -import java.io.File; -import java.util.Arrays; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jdt.core.IJarEntryResource; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.ui.JavaElementLabelProvider; -import org.eclipse.jdt.ui.StandardJavaElementContentProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jst.jsf.common.ui.IFileFolderConstants; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.utils.PathUtil; -import org.eclipse.swt.widgets.Shell; - -/** - * This dialog will let client to select resources that located on a - * IJavaProject classpath, the client can provide a list of files suffixs to - * filter. - * - * @author mengbo - */ -// TODO: Since many jar files might do nothing to do with client's selection, we -// may need to provides more filter choice -// to clients to exclude unnecessary jar files, such as that are located in JDK -// dir. -public class ResourceOnClasspathDialog extends TreeViewerSelectionDialog { - // ResourcesOnClasspathDialog.statusMessage = Please select a property file - private static final String STATUS_MESSAGE = JSFUICommonPlugin - .getResourceString("Dialog.ResourceOnClasspathDialog.StatusMessage"); //$NON-NLS-1$ - - private IJavaProject _javaProject; - - // the suffixs of files that can be selected - private String _suffixs[]; - - // IJMTConstants.DEFAULT_SUFFIX; - - private ResourceOnClasspathFilter _filter; - - // Client doesn't need to know it. - class ResourceOnClasspathFilter extends ViewerFilter { - StandardJavaElementContentProvider _javaContentProvider; - - /** - * @param contentProvider - */ - public ResourceOnClasspathFilter( - StandardJavaElementContentProvider contentProvider) { - _javaContentProvider = contentProvider; - } - - /** - * Set the suffixs of files need to be selected. - * - * @param suffixs - */ - public void setSuffixs(String suffixs[]) { - _suffixs = suffixs; - } - - /** - * @param contentProvider - * The _javaContentProvider to set. - */ - public void setJavaContentProvider( - StandardJavaElementContentProvider contentProvider) { - _javaContentProvider = contentProvider; - } - - /** - * @param project - * The _javaProject to set. - */ - public void setJavaProject(IJavaProject project) { - _javaProject = project; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, - * java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, - Object element) { - // TODO: This logic can be improved by add caching mechanism - if (element instanceof IJavaProject) { - String currentProjectName = ((IJavaProject) element) - .getProject().getFullPath().toString().trim(); - String projectName = _javaProject.getProject().getFullPath() - .toString().trim(); - if (projectName.equalsIgnoreCase(currentProjectName)) { - return true; - } - return false; - } else if (element instanceof IResource) { - if (((_javaProject != null) && !_javaProject - .isOnClasspath((IResource) element))) { - return false; - } - if (element instanceof IFile) { - if (Arrays.asList(_suffixs).contains( - ((IFile) element).getFileExtension())) { - return true; - } - } - return false; - } - - if (element instanceof IJarEntryResource) { - String ext = ((IJarEntryResource) element).getFullPath() - .getFileExtension(); - if (ext != null && Arrays.asList(_suffixs).contains(ext)) { - return true; - } - return false; - } - if (!(element instanceof IJavaElement)) { - return false; - } - if (((_javaProject != null) && !_javaProject - .isOnClasspath((IJavaElement) element))) { - return false; - } - IJavaElement javaElement = (IJavaElement) element; - Object[] children = null; - switch (javaElement.getElementType()) { - case IJavaElement.PACKAGE_FRAGMENT_ROOT: - children = _javaContentProvider.getChildren(javaElement); - break; - case IJavaElement.IMPORT_CONTAINER: - return true; - case IJavaElement.PACKAGE_FRAGMENT: - children = _javaContentProvider.getChildren(javaElement); - break; - case IJavaElement.CLASS_FILE: - if (Arrays.asList(_suffixs).contains( - IFileFolderConstants.EXT_CLASS)) { - return true; - } - return false; - case IJavaElement.COMPILATION_UNIT: - String ext = javaElement.getPath().getFileExtension(); - if (ext != null && Arrays.asList(_suffixs).contains(ext)) { - return true; - } - return false; - default: - return false; - } - - for (int i = 0; i < children.length; i++) { - if (select(viewer, javaElement, children[i])) { - return true; - } - } - // Either the resouce or its children are not for displaying. - return false; - } - } - - /** - * Set the suffixs of files need to be selected. - * - * @param suffixs - */ - public void setSuffixs(String suffixs[]) { - _suffixs = suffixs; - _filter.setSuffixs(suffixs); - } - - /** - * @param parentShell - * @param project - */ - public ResourceOnClasspathDialog(Shell parentShell, IJavaProject project) { - super(parentShell, STATUS_MESSAGE); - // set provider and filter - StandardJavaElementContentProvider contentProvider = new StandardJavaElementContentProvider(); - setContentProvider(contentProvider); - setLabelProvider(new JavaElementLabelProvider()); - _filter = new ResourceOnClasspathFilter(contentProvider); - setFilter(_filter); - // store the project - _javaProject = project; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.ui.dialogs.SelectionDialog#getResult() - */ - public Object[] getResult() { - Object[] objects = super.getResult(); - if (objects == null || objects.length == 0) { - return null; - } - IPath path = PathUtil.getPathOnClasspath(_javaProject, objects[0]); - String result = null; - if (path.segmentCount() == 0) { - return new Object[] { "" }; //$NON-NLS-1$ - } - path = path.removeFileExtension(); - result = path.toOSString(); - result = result.replace(File.separatorChar, '.'); - return new Object[] { result }; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jst.pagedesigner.ui.common.SelectionTreeViewerDialog#isValidSelection() - */ - protected boolean isValidSelection(Object selection) { - String extension = PathUtil.getPathOnClasspath(_javaProject, selection) - .getFileExtension(); - return (extension != null && Arrays.asList(_suffixs).contains(extension)); - } - - protected Object findInputElement() { - Object input = ResourcesPlugin.getWorkspace(); - if (input instanceof IWorkspace) { - return JavaCore.create(((IWorkspace) input).getRoot()); - } else if (input instanceof IContainer) { - IJavaElement element = JavaCore.create((IContainer) input); - if (element != null && element.exists()) { - return element; - } - return input; - } - return JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/TreeViewerSelectionDialog.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/TreeViewerSelectionDialog.java deleted file mode 100644 index 3214dbd7e..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/dialogs/TreeViewerSelectionDialog.java +++ /dev/null @@ -1,393 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.dialogs; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.eclipse.core.resources.IFile; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.ViewerComparator; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.jface.viewers.ViewerSorter; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.dialogs.SelectionDialog; -import org.eclipse.ui.part.DrillDownComposite; - -/** - * This is a base dialog that uses TreeViewer to show selections, subclass needs - * to provide IContentProvider, ILabelProvider and ViewerFilter for the - * TreeViewer. Subclass needs to implement isValidSelection(), which valids the - * selection, and findInputElement() which provides the root element of the - * tree. Besides, subclass might need to implement getResult() to return a - * customized result. - * - * @author mengbo - * - */ -public abstract class TreeViewerSelectionDialog extends SelectionDialog { - private static final String DEFAULT_TITLE = JSFUICommonPlugin - .getResourceString("Dialog.TreeViewerSelectionDialog.DefaultTitle"); //$NON-NLS-1$ - - /** Used to tag the image type */ - public static final int STYLE_NONE = 0; - - private static final int STYLE_INFORMATION = 1; - - private static final int STYLE_ERROR = 2; - - private static final int STYLE_WARNING = 3; - - /** Sizi of the TreeViewer composite */ - private static final int SIZING_SELECTION_PANE_HEIGHT = 300; - - private static final int SIZING_SELECTION_PANE_WIDTH = 320; - - private String _title = DEFAULT_TITLE; - - // the seleciton on the treeviewer. - private static Object[] _selection; - - // providers - private ITreeContentProvider _contentProvider; - - private ILabelProvider _labelProvider; - - private ViewerFilter _filter; - - /** The validation image */ - private Label _statusImage; - - /** The validation message */ - private Label _statusLabel; - - private String _statusMessage; - - /** The selection tree */ - private TreeViewer _treeViewer; - - private int _style; - - private ViewerSorter _viewerSorter = null; - private ViewerComparator _viewerComparator = null; - /** - * @param parentShell - * @param statusMessage - * @param style - */ - public TreeViewerSelectionDialog(Shell parentShell, String statusMessage, - int style) { - super(parentShell); - _statusMessage = statusMessage; - _style = style; - setShellStyle(SWT.CLOSE | SWT.TITLE | SWT.BORDER - | SWT.APPLICATION_MODAL | SWT.RESIZE); - } - - /** - * Convenience for TreeViewerSelectionDialog(parentShell, statusMessage, SWT.NONE) - * - * @param parentShell - * @param statusMessage - */ - public TreeViewerSelectionDialog(Shell parentShell, String statusMessage) { - this(parentShell, statusMessage, SWT.NONE); - } - - public void setTitle(String title) { - super.setTitle(title); - _title = title; - } - - /** - * Returns a new drill down viewer for this dialog. - * @param parent - */ - protected void createTreeViewer(Composite parent) { - // Create drill down - DrillDownComposite drillDown = new DrillDownComposite(parent, - SWT.BORDER); - GridData spec = new GridData(GridData.FILL_BOTH); - spec.widthHint = SIZING_SELECTION_PANE_WIDTH; - spec.heightHint = SIZING_SELECTION_PANE_HEIGHT; - drillDown.setLayoutData(spec); - _treeViewer = new TreeViewer(drillDown, _style); - drillDown.setChildTree(_treeViewer); - } - - private void setTreeViewerProviders() { - _treeViewer.setContentProvider(_contentProvider); - _treeViewer.setLabelProvider(_labelProvider); - if (_viewerSorter == null) { - _viewerSorter = new ViewerSorter(); - } - _treeViewer.setSorter(_viewerSorter); - - // override if not null.. setSorter is discouraged. - if (_viewerComparator != null) - { - _treeViewer.setComparator(_viewerComparator); - } - _treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - _selection = getSelectedElements((IStructuredSelection) event - .getSelection()); - updateStatus(); - } - }); - _treeViewer.addDoubleClickListener(new IDoubleClickListener() { - public void doubleClick(DoubleClickEvent event) { - ISelection selection = event.getSelection(); - if (selection instanceof IStructuredSelection) { - Object item = ((IStructuredSelection) selection) - .getFirstElement(); - if (item instanceof IFile) { - okPressed(); - } else if (_treeViewer.getExpandedState(item)) { - _treeViewer.collapseToLevel(item, 1); - } else { - _treeViewer.expandToLevel(item, 1); - } - } - } - }); - _treeViewer.setInput(findInputElement()); - - if (_filter != null) { - _treeViewer.addFilter(_filter); - } - } - - /** - * Creates the contents of the composite. - * @param parent - */ - protected void createTreeViewerComposite(Composite parent) { - Composite treeViewerComposite = new Composite(parent, SWT.NONE); - GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - treeViewerComposite.setLayout(layout); - - GridData gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalSpan = 2; - treeViewerComposite.setLayoutData(gridData); - Label label = new Label(treeViewerComposite, SWT.WRAP); - label.setText(_title); - label.setFont(treeViewerComposite.getFont()); - createTreeViewer(treeViewerComposite); - Dialog.applyDialogFont(treeViewerComposite); - } - - /** - * Sets the selected existing container. - * @param selection - */ - public void setSelectedElement(Object[] selection) { - // Expand to and select the specified container - if (selection == null) { - return; - } - - for (int i = 0; i < selection.length; i++) { - if (_selection[i] != null) { - _treeViewer.expandToLevel(_selection[i], 1); - - } - } - _treeViewer.setSelection(new StructuredSelection(selection), true); - } - - /* - * (non-Javadoc) Method declared on Dialog. - */ - protected Control createDialogArea(Composite parent) { - Composite area = (Composite) super.createDialogArea(parent); - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 2; - area.setLayout(gridLayout); - - // Container treeviewer composite - createTreeViewerComposite(area); - - _statusImage = createLabel(area); - _statusImage.setImage(getMessageImage(STYLE_ERROR)); - _statusLabel = createLabel(area); - // Link to model - setTreeViewerProviders(); - - return dialogArea; - } - - private Label createLabel(Composite parent) { - Label label = new Label(parent, SWT.LEFT); - GridData data = new GridData(); - data.horizontalSpan = 1; - data.horizontalAlignment = GridData.FILL; - label.setLayoutData(data); - label.setText(_statusMessage == null ? "" : _statusMessage); //$NON-NLS-1$ - return label; - } - - private Object[] getSelectedElements(IStructuredSelection selection) { - return selection.toArray(); - } - - /** - * @param provider - * The _contentProvider to set. - */ - public void setContentProvider(ITreeContentProvider provider) { - _contentProvider = provider; - } - - /** - * @param provider - * The _labelProvider to set. - */ - public void setLabelProvider(ILabelProvider provider) { - _labelProvider = provider; - } - - /** - * @param filter - * The _filter to set. - */ - public void setFilter(ViewerFilter filter) { - this._filter = filter; - } - - /** - * @param sorter - * The _viewerSorter to set. - */ - public void setViewerSorter(ViewerSorter sorter) { - _viewerSorter = sorter; - } - - /** - * Set the viewer comparator. If not null, it's set after after the - * viewer sorter and thus overrides it. - * - * @param viewerComparator - */ - public void setViewerComparator(ViewerComparator viewerComparator) - { - _viewerComparator = viewerComparator; - } - - /** - * @param message - */ - public void setStatusMessage(String message) { - _statusMessage = message; - } - - /** - * Update the status message - */ - private void updateStatus() { - Object selection = _selection; - if (_selection != null && _selection.length == 1) { - selection = _selection[0]; - } - if (isValidSelection(selection)) { - _statusImage.setVisible(false); - _statusLabel.setText(""); //$NON-NLS-1$ - getOkButton().setEnabled(true); - } else { - _statusImage.setVisible(true); - _statusImage.setImage(getMessageImage(STYLE_ERROR)); - _statusImage.redraw(); - _statusLabel.setText(_statusMessage); - getOkButton().setEnabled(false); - } - - } - - /** - * Get the different message according the message type. - * @param imageType - * - * @return Image - the message image - */ - protected Image getMessageImage(int imageType) { - switch (imageType) { - case STYLE_ERROR: - return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_ERROR); - case STYLE_WARNING: - return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_WARNING); - case STYLE_INFORMATION: - return JFaceResources.getImage(Dialog.DLG_IMG_MESSAGE_INFO); - default: - return null; - } - } - - /** - * The <code>ContainerSelectionDialog</code> implementation of this - * <code>Dialog</code> method builds a list of the selected resource - * containers for later retrieval by the client and closes this dialog. - */ - protected void okPressed() { - List chosenContainerPathList = new ArrayList(); - if (_selection != null) { - chosenContainerPathList.addAll(Arrays.asList(_selection)); - } - setResult(chosenContainerPathList); - super.okPressed(); - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.jface.window.Window#createContents(org.eclipse.swt.widgets.Composite) - */ - protected Control createContents(Composite parent) { - Control control = super.createContents(parent); - if (_selection != null) { - this.setSelectedElement(_selection); - } - return control; - } - - /** - * @param selection - * @return true if selection is valid - */ - protected abstract boolean isValidSelection(Object selection); - - /** - * Used to set the input element on the tree viewer - * @return the input element - */ - protected abstract Object findInputElement(); -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractDetailsForm.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractDetailsForm.java deleted file mode 100644 index 887d57f9b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractDetailsForm.java +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.form; - -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * The parent of all detail forms. - * - * @author cbateman - * - */ -public abstract class AbstractDetailsForm -{ - private FormToolkit _toolkit; - - /** - * - */ - protected AbstractDetailsForm() - { - super(); - } - - /** - * Called to refresh model if stale - */ - public void refresh() - { - // do nothing by default - } - - /** - * Called before createContents. - * - * @param toolkit - */ - public final void initialize(final FormToolkit toolkit) - { - _toolkit = toolkit; - doInitialize(); - } - - /** - * Override to customize initialization. getToolkit() is safe to call - * from this method. You should not make other state assumptions. - */ - protected void doInitialize() - { - // do nothing by default; - } - - /** - * Callled by MasterDetailBlock during it's dispose - */ - public abstract void dispose(); - - /** - * @param onSave - */ - public abstract void commit(boolean onSave); - - /** - * Called on this details form before it is shown, when it becomes active - * due to a matching selection change in the master form. Implementer - * should use newSelection as the new instance of their model and - * reinitialize UI as appropriate. - * @param newSelection - */ - protected abstract void doUpdateSelection(final Object newSelection); - - /** - * @return the contents control. Must not be called before createContents. - */ - public abstract Control getControl(); - - /** - * Fired to indicate that this detail form is now selected based on the - * master form selected. - * - * @param selection - */ - public void selectionChanged(final ISelection selection) - { - // by default, get the first element of the selection if there is - // one and call doUpdateSelection on it. Sub-classes may change - // this behaviour - if (selection instanceof IStructuredSelection) - { - final Object selectionObj = ((IStructuredSelection) selection) - .getFirstElement(); - doUpdateSelection(selectionObj); - } - } - - /** - * Create the contents of the detail form using 'parent'. Should not be - * called before initialize. - * - * @param parent - */ - public abstract void createContents(Composite parent); - - /** - * @return the form toolkit in use. Should not be called before - * initialize. - */ - protected final FormToolkit getToolkit() - { - return _toolkit; - } - - /** - * @return true if the form is dirty - */ - public boolean isDirty() - { - // never dirty by default - return false; - } - - /** - * @return true if form is stale - */ - public boolean isStale() - { - // always stale by default - return true; - } - - /** - * Called to set focus on the detail form's control - */ - public abstract void setFocus(); -}
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterDetailBlock.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterDetailBlock.java deleted file mode 100644 index 7141dcb88..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterDetailBlock.java +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.form; - -import java.util.List; - -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.BusyIndicator; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.custom.StackLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.forms.widgets.Form; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * An alternative to MasterDetailBlock that doesn't use the ScrolledForm - * that causes problems as described here: - * - * http://dev.eclipse.org/newslists/news.eclipse.platform/msg73145.html - - * @author cbateman - * - */ -public abstract class AbstractMasterDetailBlock implements - ISelectionChangedListener -{ - private AbstractMasterForm _masterForm; - private Composite _detailsPanel; - private AbstractDetailsForm _curPage; - private FormToolkit _toolkit; - private StackLayout _detailLayout; - private List<AbstractDetailsForm> _detailForms; - private BlankDetailsForm _blankDetails; - - /** - * - */ - protected AbstractMasterDetailBlock() - { - super(); - } - - /** - * Disposes the master detail form - */ - public final void dispose() - { - _masterForm.dispose(); - - for (final AbstractDetailsForm detailsForm : _detailForms) - { - detailsForm.dispose(); - } - - doDispose(); - } - - /** - * Override to get custom dispose logic. Do not use this to dispose of - * master or details forms. This is done automatically for you before - * doDispose is called. - */ - protected void doDispose() - { - // do nothing by default - } - - /** - * @param toolkit - * @param form - */ - public final void createContent(final FormToolkit toolkit, final Form form) - { - _toolkit = toolkit; - - final GridLayout layout = new GridLayout(); - layout.marginWidth = 5; - layout.marginHeight = 5; - form.getBody().setLayout(layout); - final SashForm sashForm = new SashForm(form.getBody(), SWT.NULL); - // sashForm.setData("form", managedForm); //$NON-NLS-1$ - _toolkit.adapt(sashForm, false, false); - sashForm.setMenu(form.getBody().getMenu()); - sashForm.setLayoutData(new GridData(GridData.FILL_BOTH)); - initializeMasterPart(_toolkit, sashForm); - createDetailsPart(sashForm); - - _masterForm.createHead(form); - createToolBarActions(form); - form.updateToolBar(); - } - - /** - * @param toolkit - * @return the master form. - */ - protected abstract AbstractMasterForm createMasterPart( - final FormToolkit toolkit); - - private void initializeMasterPart(final FormToolkit toolkit, - final Composite parent) - { - _masterForm = createMasterPart(toolkit); - _masterForm.initialize(this); - _masterForm.createClientArea(parent); - } - - private void createToolBarActions(final Form form) - { - _masterForm.contributeActions(form.getToolBarManager()); - } - - private void createDetailsPart(final Composite parent) - { - _detailsPanel = new Composite(parent, SWT.NONE); - _detailLayout = new StackLayout(); - _detailsPanel.setLayout(_detailLayout); - - _detailForms = createDetailPages(); - - for (final AbstractDetailsForm detailForm : _detailForms) - { - detailForm.initialize(_toolkit); - detailForm.createContents(_detailsPanel); - } - - // create default blank page - _blankDetails = new BlankDetailsForm(); - _blankDetails.initialize(_toolkit); - _blankDetails.createContents(_detailsPanel); - - _curPage = _blankDetails; - _detailLayout.topControl = _curPage.getControl(); - _detailsPanel.layout(); - } - - public final void selectionChanged(final SelectionChangedEvent event) - { - final Object selectedObj = ((IStructuredSelection) event.getSelection()) - .getFirstElement(); - final AbstractDetailsForm page = selectPage(selectedObj); - if (page != null) - { - final AbstractDetailsForm fpage = page; - BusyIndicator.showWhile(_detailsPanel.getDisplay(), new Runnable() - { - public void run() - { - final AbstractDetailsForm oldPage = _curPage; - _curPage = fpage; - // commit the current page - if (oldPage != null && oldPage.isDirty()) - { - oldPage.commit(false); - } - // refresh the new page - if (fpage.isStale()) - { - fpage.refresh(); - } - _curPage.selectionChanged(event.getSelection()); - // _pageBook.showPage(_curPage.getTextSection().getControl()); - _detailLayout.topControl = _curPage.getControl(); - _detailsPanel.layout(); - } - }); - } - } - - /** - * @return a list of detail forms - */ - protected abstract List<AbstractDetailsForm> createDetailPages(); - - /** - * @param forModel - * @return the details form for 'forModel'. If implementer returns null, - * then a blank page will be provided - */ - protected abstract AbstractDetailsForm doSelectPage(final Object forModel); - - private AbstractDetailsForm selectPage(final Object forModel) - { - final AbstractDetailsForm clientForm = doSelectPage(forModel); - - if (clientForm != null) - { - return clientForm; - } - return _blankDetails; - } - -}
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterForm.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterForm.java deleted file mode 100644 index 46ec8646e..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractMasterForm.java +++ /dev/null @@ -1,165 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.form; - -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.ui.forms.widgets.Form; -import org.eclipse.ui.forms.widgets.FormToolkit; - -/** - * - * @author cbateman - * - */ -public abstract class AbstractMasterForm -{ - - private final FormToolkit _toolkit; - private ISelectionChangedListener _listener; - private ToolBarManager _toolBarManager; - - /** - * @param toolkit - */ - protected AbstractMasterForm(FormToolkit toolkit) - { - super(); - _toolkit = toolkit; - } - - /** - * @param listener - * the selection listener that is signalled to indicate the - * selection in the master has changed and the detail should be - * updated. - */ - public final void initialize(final ISelectionChangedListener listener) - { - _listener = listener; - doInitialize(); - } - - /** - * It is safe to call getListener() and get getToolkit() in this method. All - * other methods should be considered unavailable. - */ - protected void doInitialize() - { - // do nothing by default; override to do customize init - } - - /** - * @param parent - * @return the client area for the master form, using parent is the parent - * control. - */ - public abstract Control createClientArea(final Composite parent); - - /** - * @param form - */ - public final void createHead(final Form form) - { - final Composite head = form.getHead(); - final Composite container = getToolkit().createComposite(head); - container.setLayout(new RowLayout()); - - // sub-class contribution - contributeToHeadArea(getToolkit(), container); - - _toolBarManager = new ToolBarManager(SWT.FLAT); - ToolBar toolbar = _toolBarManager.createControl(container); - // _toolkit.adapt(toolbar, false, false); - - toolbar.setBackground(form.getHead().getBackground()); - toolbar.setForeground(form.getHead().getForeground()); - //toolbar.setCursor(FormsResources.getHandCursor()); - container.addDisposeListener(new DisposeListener() - { - public void widgetDisposed(DisposeEvent e) - { - if (_toolBarManager != null) - { - _toolBarManager.dispose(); - _toolBarManager = null; - } - } - }); - - form.setHeadClient(container); - - } - - /** - * Override to add client area before the toolbar. - * - * @param toolkit - * @param container - */ - protected void contributeToHeadArea(FormToolkit toolkit, Composite container) - { - // do nothing by default - } - - /** - * @param formManager - */ - public final void contributeActions(final IToolBarManager formManager) - { - contributeActions(formManager, _toolBarManager); - } - - /** - * @param formManager - * adds to the toolkit's toolbar - * @param localManager - * adds to AbstractMasterForm's toolbar. - */ - protected void contributeActions(final IToolBarManager formManager, - final IToolBarManager localManager) - { - // do nothing by default. Override to add actions. - } - - /** - * Should be called at any time after initialize and createContents when the - * owner is finished with the master-detail form block. - */ - public void dispose() - { - // do nothing by default; - } - - /** - * @return the tool kit in use. - */ - protected final FormToolkit getToolkit() - { - return _toolkit; - } - - /** - * @return the selection listener - */ - protected final ISelectionChangedListener getListener() - { - return _listener; - } -}
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractXMLSectionsDetailsForm.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractXMLSectionsDetailsForm.java deleted file mode 100644 index 902ec7e94..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/AbstractXMLSectionsDetailsForm.java +++ /dev/null @@ -1,186 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.form; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowData; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.FormText; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Section; - -/** - * A detail form that uses XML text sections. - * - * @author cbateman - * - */ -public abstract class AbstractXMLSectionsDetailsForm extends - AbstractDetailsForm -{ - private Map<Object, XMLTextSection> _textSections; - private Composite _detailFormComposite; - - /** - * @param parent - */ - @Override - public final void createContents(final Composite parent) - { - _detailFormComposite = getToolkit().createComposite(parent, SWT.NONE); - final RowLayout rowLayout = new RowLayout(SWT.VERTICAL); - rowLayout.fill = true; - _detailFormComposite.setLayout(rowLayout); - // take a copy of what's returned so the sub-class can't control - // the map reference - _textSections = Collections - .unmodifiableMap(new HashMap<Object, XMLTextSection>( - createXMLTextSections(_detailFormComposite))); - - final Set<XMLTextSection> expandedSections = getInitiallyExpanded(_textSections); - for (final Map.Entry<? extends Object, XMLTextSection> entry : _textSections - .entrySet()) - { - final XMLTextSection section = entry.getValue(); - if (expandedSections.contains(section)) - { - section._section.setExpanded(true); - } - } - } - - /** - * @param parent - * the parent that should be used for all XMLTextSections - * @return a map keyed by an object type understood by the sub-class - * containing as values the XMLTextSections - */ - protected abstract Map<? extends Object, XMLTextSection> createXMLTextSections( - final Composite parent); - - /** - * @param sections - * @return the subset of XMLTextSections in the provided map that are to be - * expanded. NOTE: all elements in the returned set must be in - * sections.getValues. - */ - protected abstract Set<XMLTextSection> getInitiallyExpanded( - final Map<Object, XMLTextSection> sections); - - /** - * @return the control for this form - */ - @Override - public Control getControl() - { - return _detailFormComposite; - } - - /** - * @param selection - */ - public final void selectionChanged(final ISelection selection) - { - if (selection instanceof IStructuredSelection) - { - final Object selectionObj = ((IStructuredSelection) selection) - .getFirstElement(); - doUpdateSelection(selectionObj); - } - } - - @Override - public void commit(final boolean onSave) - { - // do nothing - } - - @Override - public void dispose() - { - // do nothing - } - - @Override - public void setFocus() - { - // do nothing; sub-classes should override to pick an XMLTextSection - // where they want focus. - } - - /** - * An XML text section - * - */ - protected final static class XMLTextSection - { - private final Section _section; - private FormText _formText; - - /** - * @param toolkit - * @param parent - * @param title - */ - public XMLTextSection(final FormToolkit toolkit, - final Composite parent, final String title) - { - _section = toolkit.createSection(parent, - ExpandableComposite.TREE_NODE - | ExpandableComposite.CLIENT_INDENT); - _section.setLayoutData(new RowData()); - _section.setText(title); - - _formText = toolkit.createFormText(_section, true); - _formText.setText("", false, false); //$NON-NLS-1$ - - _section.setClient(_formText); - } - - /** - * @param text - * @param parseTags - * @param expandURLs - */ - public void setText(final String text, final boolean parseTags, - final boolean expandURLs) - { - _formText.setText(text, parseTags, expandURLs); - } - - /** - * @return the parent control. - */ - public Control getControl() - { - return _section; - } - - /** - * Force a visual relayout and update. - */ - public void refresh() - { - _section.getParent().layout(true, true); - } - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/BlankDetailsForm.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/BlankDetailsForm.java deleted file mode 100644 index 7678b0394..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/form/BlankDetailsForm.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.form; - -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; - -/** - * A blank details form. - * - * @author cbateman - * - */ -public final class BlankDetailsForm extends AbstractDetailsForm -{ - private Composite _emptyPanel; - - @Override - public void createContents(Composite parent) - { - _emptyPanel = getToolkit().createComposite(parent); - } - - @Override - public Control getControl() - { - return _emptyPanel; - } - - @Override - protected void doUpdateSelection(Object newSelection) - { - // do nothing - } - - @Override - public void commit(boolean onSave) - { - // nothing to commit - } - - @Override - public void dispose() - { - // nothing to dispose - } - - @Override - public void setFocus() - { - // don't bother changing focus - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Alerts.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Alerts.java deleted file mode 100644 index 54c3a27a7..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Alerts.java +++ /dev/null @@ -1,837 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import java.lang.reflect.InvocationTargetException; -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.MultiStatus; -import org.eclipse.core.runtime.Status; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.dialogs.IInputValidator; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -/** - * This class will provide UI alert dialogs to the user. These will - * automatically get the message from the plugin's resource bundle. - * - * NOTE: there are some generic exception methods included in this file. They - * need resource bundles also, and they make the alerts bettern when the - * exception is caught at a later stage. - * - * @author mengbo - */ -public class Alerts { - // this is used for junit testing to turn off all alerts and return the - // default on yes/no dialogs. - private static boolean _noAlerts = false; - - private ResourceBundle _rb; - - private String _pluginId; - - /** - * Construct a alerts with the provided attributes. This constructor should - * be used from the root plugin that has access to the resource bundle for - * this plugin. - * - * @param plugin - * @param rb - * the resource bundle to use. - */ - public Alerts(AbstractUIPlugin plugin, ResourceBundle rb) { - _rb = rb; - if (_rb == null) { - throw new NullPointerException( - "No resource bundle was provided to the Alerts."); //$NON-NLS-1$ - } - if (plugin == null) { - throw new NullPointerException( - "No plugin was provided to the Alerts."); //$NON-NLS-1$ - } - _pluginId = plugin.getBundle().getSymbolicName(); - } - - /** - * Returns the text entered by a user in a simple request dialog. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param initialValue - - * initial value in the text area. - * @param validator - - * something that checks for validity on the name. - * @return null is returned if the user hits cancel, otherwise it is the - * text they entered. - */ - public String getInput(String titleKey, String msgKey, String initialValue, - IInputValidator validator) { - if (_noAlerts) { - return null; - } - - InputDialog inDialog = new InputDialog(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey), - initialValue, validator); - inDialog.open(); - return inDialog.getValue(); - } - - /** - * Displays an Error message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - */ - public void error(String titleKey, String msgKey) { - if (_noAlerts) { - return; - } - - MessageDialog.openError(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey)); - } - - /** - * Displays an Error message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - */ - public void error(String titleKey, String msgKey, Object arg0) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openError(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an Error message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - */ - public void error(String titleKey, String msgKey, Object arg0, Object arg1) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[2]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openError(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an Error message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - * @param arg2 - - * arg to place into the resource bundle message. - */ - public void error(String titleKey, String msgKey, Object arg0, Object arg1, - Object arg2) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[3]; - args[0] = arg0; - args[1] = arg1; - args[2] = arg2; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openError(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an Error message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - * @param arg2 - - * arg to place into the resource bundle message. - * @param arg3 - - * arg to place into the resource bundle message. - */ - public void error(String titleKey, String msgKey, Object arg0, Object arg1, - Object arg2, Object arg3) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[4]; - args[0] = arg0; - args[1] = arg1; - args[2] = arg2; - args[3] = arg3; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openError(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an Error message to the user. - * - * @param shell - - * the shell for the error dialog - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - */ - public void error(Shell shell, String titleKey, String msgKey) { - if (_noAlerts) { - return; - } - - MessageDialog.openError(shell, getResourceString(titleKey), - getResourceString(msgKey)); - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - */ - public void detailError(String titleKey, String msgKey) { - if (_noAlerts) { - return; - } - - final IStatus fstatus = new Status(IStatus.ERROR, _pluginId, - IStatus.OK, getResourceString(msgKey), null); - final String ftitle = getResourceString(titleKey); - - Display display = getStandardDisplay(); - display.asyncExec(new Runnable() { - public void run() { - ErrorDialog.openError(null, ftitle, null, fstatus); - } - }); - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. This will give the details button. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param tt - - * exception to place in the details. - */ - public void detailError(String titleKey, String msgKey, Throwable tt) { - if (_noAlerts) { - return; - } - - internalDetailError(getResourceString(titleKey), - getResourceString(msgKey), tt); - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. This will give the details button. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param tt - - * exception to place in the details. - */ - public void detailError(String titleKey, String msgKey, Object arg0, - Throwable tt) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - internalDetailError(getResourceString(titleKey), - formatter.format(args), tt); - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. This will give the details button. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - * @param tt - - * exception to place in the details. - */ - public void detailError(String titleKey, String msgKey, Object arg0, - Object arg1, Throwable tt) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[1]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - internalDetailError(getResourceString(titleKey), - formatter.format(args), tt); - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. This will give the details button. - * - * @param title - - * the title message - * @param message - - * message displayed to the user - */ - private void internalDetailError(String title, String msg, Throwable tt) { - if (_noAlerts) { - return; - } - - if (tt instanceof InvocationTargetException) { - tt = ((InvocationTargetException) tt).getTargetException(); - } - - IStatus status = null; - if (tt instanceof CoreException) { - status = ((CoreException) tt).getStatus(); - - if ((status instanceof MultiStatus) == false) { - // convert to a multistatus to show the exception details. - - Throwable th = status.getException(); - if (th == null) { - th = tt; - } - - status = buildStackTraceStatus(IStatus.ERROR, status - .getPlugin(), status.getMessage(), th); - } - } else { - status = buildStackTraceStatus(IStatus.ERROR, _pluginId, tt - .getMessage(), tt); - } - - final String ftitle = title; - final IStatus fstatus = status; - final String fmsg = msg; - Display display = getStandardDisplay(); - display.asyncExec(new Runnable() { - public void run() { - ErrorDialog.openError(null, ftitle, fmsg, fstatus); - } - }); - } - - /** - * Builds a multistatus, so that the stack trace shows up in the alery - * message for detailed alerts. - * - * @param code - * @param pluginId - * @param message - * @param tt - * @return the result of the operation - */ - public IStatus buildStackTraceStatus(int code, String pluginId, - String message, Throwable tt) { - if (tt == null) { - return new Status(code, pluginId, IStatus.OK, message, tt); - } - - MultiStatus mstat = new MultiStatus(pluginId, code, message, tt); - - StackTraceElement[] trace = tt.getStackTrace(); - - mstat.add(new Status(code, pluginId, IStatus.OK, tt.toString(), null)); - for (int ii = 0; ii < trace.length; ii++) { - mstat.add(new Status(code, pluginId, IStatus.OK, trace[ii] - .toString(), null)); - } - return mstat; - } - - /** - * Displays an Error message to the user with a status using the Display - * background thread. This will give the details button. - * - * @param status - - * the status - * @param title - - * the title of the message - */ - public void detailError(String title, IStatus status) { - if (_noAlerts) { - return; - } - - final IStatus fstatus = status; - final String ftitle = title; - Display display = getStandardDisplay(); - display.asyncExec(new Runnable() { - public void run() { - ErrorDialog.openError(null, ftitle, null, fstatus); - } - }); - } - - /** - * Displays an information message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - */ - public void info(String titleKey, String msgKey) { - if (_noAlerts) { - return; - } - - MessageDialog.openInformation(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey)); - } - - /** - * Displays an information message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - */ - public void info(String titleKey, String msgKey, Object arg0) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openInformation(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an confirmation message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @return true if the user presses the OK button, false otherwise - */ - public boolean confirm(String titleKey, String msgKey) { - if (_noAlerts) { - return true; - } - - return MessageDialog.openConfirm(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey)); - } - - /** - * Displays an confirmation message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @return true if the user presses the OK button, false otherwise - */ - public boolean confirm(String titleKey, String msgKey, Object arg0) { - if (_noAlerts) { - return true; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - return MessageDialog.openConfirm(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an question message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @return true if the user presses the "yes" button, false otherwise - */ - public boolean question(String titleKey, String msgKey) { - if (_noAlerts) { - return true; - } - - return MessageDialog.openQuestion(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey)); - } - - /** - * Displays an question message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @return true if the user presses the "yes" button, false otherwise - */ - public boolean question(String titleKey, String msgKey, Object arg0) { - if (_noAlerts) { - return true; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - return MessageDialog.openQuestion(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Displays an warning message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - */ - public void warning(String titleKey, String msgKey) { - if (_noAlerts) { - return; - } - - MessageDialog.openWarning(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), getResourceString(msgKey)); - } - - /** - * Displays an warning message to the user. - * - * @param titleKey - - * the title resource bundle key for the message - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - */ - public void warning(String titleKey, String msgKey, Object arg0) { - if (_noAlerts) { - return; - } - - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - MessageDialog.openWarning(PlatformUI.getWorkbench() - .getActiveWorkbenchWindow().getShell(), - getResourceString(titleKey), formatter.format(args)); - } - - /** - * Returns the standard display to be used. The method first checks, if the - * thread calling this method has an associated dispaly. If so, this display - * is returned. Otherwise the method returns the default display. - * - * TODO: should probably use the workbench display - */ - private Display getStandardDisplay() { - Display display = Display.getCurrent(); - if (display == null) { - display = Display.getDefault(); - } - return display; - } - - /** - * Returns the string from the resource bundle, or 'key' if not found. - */ - private String getResourceString(String key) { - if (key == null) { - return null; - } - - try { - return _rb.getString(key); - } catch (MissingResourceException ee) { - return key; - } - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @throws CoreException - */ - public void throwCoreException(String msgKey) throws CoreException { - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - getResourceString(msgKey), null); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param ee - - * the real exception. - * @throws CoreException - */ - public void throwCoreException(Throwable ee) throws CoreException { - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, ee - .getMessage(), ee); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param ee - - * the real exception. - * @throws CoreException - */ - public void throwCoreException(String msgKey, Throwable ee) - throws CoreException { - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - getResourceString(msgKey), ee); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @throws CoreException - */ - public void throwCoreException(String msgKey, Object arg0) - throws CoreException { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - formatter.format(args), null); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param ee - - * the real exception. - * @throws CoreException - */ - public void throwCoreException(String msgKey, Object arg0, Throwable ee) - throws CoreException { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - formatter.format(args), ee); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - * @throws CoreException - */ - public void throwCoreException(String msgKey, Object arg0, Object arg1) - throws CoreException { - Object[] args = new Object[2]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - formatter.format(args), null); - throw new CoreException(status); - } - - /** - * Throw a core exception built around the message with the correct plugin - * id and resource bundle string. - * - * @param msgKey - - * message resource bundle key for the message displayed to the - * user - * @param arg0 - - * arg to place into the resource bundle message. - * @param arg1 - - * arg to place into the resource bundle message. - * @param ee - - * the real exception. - * @throws CoreException - */ - public void throwCoreException(String msgKey, Object arg0, Object arg1, - Throwable ee) throws CoreException { - Object[] args = new Object[2]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getResourceString(msgKey)); - - IStatus status = new Status(IStatus.ERROR, _pluginId, IStatus.OK, - formatter.format(args), ee); - throw new CoreException(status); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/BrowserWindow.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/BrowserWindow.java deleted file mode 100644 index 33ce9faf4..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/BrowserWindow.java +++ /dev/null @@ -1,391 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.jface.window.ApplicationWindow; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.swt.SWT; -import org.eclipse.swt.browser.Browser; -import org.eclipse.swt.browser.LocationAdapter; -import org.eclipse.swt.browser.LocationEvent; -import org.eclipse.swt.browser.OpenWindowListener; -import org.eclipse.swt.browser.StatusTextEvent; -import org.eclipse.swt.browser.StatusTextListener; -import org.eclipse.swt.browser.WindowEvent; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.ControlAdapter; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.ToolBar; -import org.eclipse.swt.widgets.ToolItem; - -/** - * Brings up a browser into a separate window. - * - * @author mengbo. - * - * Unused??? - */ -public class BrowserWindow extends ApplicationWindow { - - private static final String RELOAD_ITEM_IMAGE_FILE = "reload_nav_16.gif"; //$NON-NLS-1$ - - private static final String REFRESH_ITEM_IMAGE_FILE = "refresh_nav_16.gif"; //$NON-NLS-1$ - - private static final String STOP_ITEM_IMAGE_FILE = "stop_nav_16.gif"; //$NON-NLS-1$ - - private static final String FORWARD_ITEM_IMAGE_FILE = "forward_nav_16.gif"; //$NON-NLS-1$ - - private static final String BACK_ITEM_IMAGE_FILE = "back_nav_16.gif"; //$NON-NLS-1$ - - - /** - * Command to send to the browser. - */ - private static final int BROWSER_CMD_BACK = 1; - - private static final int BROWSER_CMD_FORWARD = 2; - - private static final int BROWSER_CMD_STOP = 3; - - private static final int BROWSER_CMD_REFRESH = 4; - - private static final int BROWSER_CMD_RELOAD = 5; - - private boolean _bIncludeToolbar; - - private boolean _bPopups; - - private String _title; - - private ScrolledComposite _scomp; - - private Composite _browserComposite; - - private Browser _browser; - - private String _startLocation; - - private String _startContent; - - // these items are browser context sensitive. - private ToolItem _backItem; - - private ToolItem _forwardItem; - - /** - * @param parentShell - * owner of this window. - */ - public BrowserWindow(Shell parentShell) { - this(parentShell, false, null, false); - } - - /** - * @param parentShell - * owner of this window. - * @param bPopups - * allow popup windows? - * @param title - * Tittle on window. - */ - public BrowserWindow(Shell parentShell, boolean bPopups, String title) { - this(parentShell, bPopups, title, false); - } - - /** - * @param parentShell - * owner of this window. - * @param bPopups - * allow popup windows? - * @param title - * Tittle on window. - * @param bModal - * pretend to a be a dialog? - */ - public BrowserWindow(Shell parentShell, boolean bPopups, String title, - boolean bModal) { - super(parentShell); - addStatusLine(); - _bPopups = bPopups; - _title = title; - includeToolbar(true); - - if (bModal && (parentShell != null)) { - // APPLICATION_MODAL, MODELESS, PRIMARY_MODAL, SYSTEM_MODAL - setShellStyle(getShellStyle() | SWT.APPLICATION_MODAL); - setBlockOnOpen(true); - } - } - - /** - * Default is true, set whether to include the toolbar at the top. This must - * be called before the window is opened. - * - * @param bIncludeToolbar - */ - public void includeToolbar(boolean bIncludeToolbar) { - _bIncludeToolbar = bIncludeToolbar; - } - - /** - * @param title - */ - public void setTitle(String title) { - if ((title != null) && (super.getShell() != null)) { - super.getShell().setText(title); - } - } - - /** - * @param startLocation - */ - /** - * @param startLocation - */ - public void setStartLocation(String startLocation) { - _startLocation = startLocation; - } - - /** - * @param startContent - */ - public void setStartContent(String startContent) { - _startContent = startContent; - } - - /** - * @return the browser object - */ - public Browser getBrowser() { - return _browser; - } - - protected Control createContents(Composite parent) { - // Create the scroll composite as the one inside the parent. - _scomp = new ScrolledComposite(parent, SWT.V_SCROLL | SWT.H_SCROLL); - - // Create the composite that goes inside the scroller. We will use this - // for - // everything else from here. - Composite innerComposite = SWTUtils.createComposite(_scomp, 1, 10, -1); - _scomp.setContent(innerComposite); - ControlListener listener = new ControlAdapter() { - // this will handle resizing the browser when the window is resized. - public void controlResized(ControlEvent e) { - Point pt = _scomp.getParent().getSize(); - Rectangle rect = _browserComposite.getBounds(); - - pt.x -= rect.x; - pt.y -= rect.y; - - // spacing offsets in the composites. - pt.x -= 10; - pt.y -= 60; // need status bar at bottom...30 more than normal. - - // do the sanity check here since it prevents further checks. - if ((pt.x <= 0) || (pt.y <= 0)) { - return; - } - - Rectangle innerRect = _scomp.getContent().getBounds(); - Rectangle outerRect = _scomp.getBounds(); - - // substract if the scroll bars are visible. - if (innerRect.width > outerRect.width) { - pt.y -= _scomp.getHorizontalBar().getSize().y; - } - if (innerRect.height > outerRect.height) { - pt.x -= _scomp.getVerticalBar().getSize().x; - } - - _browserComposite.setSize(pt); - _browserComposite.getParent().layout(true); - } - }; - _scomp.addControlListener(listener); - - if (_bIncludeToolbar) { - // //////////////////////////////////////// - // toobar - // //////////////////////////////////////// - ToolBar tb = new ToolBar(innerComposite, SWT.HORIZONTAL | SWT.FLAT); - fillToolbar(tb); - } - - // //////////////////////////////////////// - // browser - // //////////////////////////////////////// - _browserComposite = new Composite(innerComposite, SWT.NULL); - _browserComposite.setLayout(new FillLayout()); - - _browser = new Browser(_browserComposite, SWT.NULL); - - if (_startLocation != null) { - _browser.setUrl(_startLocation); - } else if (_startContent != null) { - _browser.setText(_startContent); - } else { - _browser.setText(Messages.BrowserWindow_loading); - } - - // send the browser status messages to eclipse. - _browser.addStatusTextListener(new StatusTextListener() { - public void changed(StatusTextEvent event) { - setStatus(event.text); - } - }); - - if (_bIncludeToolbar) { - // check for change in location so we can enable the back/forward - // buttons. - _browser.addLocationListener(new LocationAdapter() { - public void changed(LocationEvent event) { - // check if there is something in the forward or back queue. - _backItem.setEnabled(_browser.isBackEnabled()); - _forwardItem.setEnabled(_browser.isForwardEnabled()); - } - }); - } - - // check is we need to open a new window. - _browser.addOpenWindowListener(new OpenWindowListener() { - public void open(WindowEvent event) { - if (_bPopups) { - BrowserWindow window = new BrowserWindow(getShell()); - window.open(); - event.browser = window.getBrowser(); - } else { - event.browser = getBrowser(); - } - } - }); - - setTitle(_title); - SWTUtils.computeScrollArea(_scomp, innerComposite); - return _scomp; - } - - /** - * Fill the toolbar for this window. This method can be overwritten to place - * other toolbar controls in the bar. - * - * @param tb - */ - protected void fillToolbar(ToolBar tb) { - // Back browser - _backItem = new ToolItem(tb, SWT.PUSH); - _backItem.setImage(JSFUICommonPlugin.getDefault() - .getImage(BACK_ITEM_IMAGE_FILE)); - _backItem.setToolTipText(JSFUICommonPlugin - .getResourceString("BrowserWindow.back.tooltip")); //$NON-NLS-1$ - SelectionListener backSelectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - browserCmd(BROWSER_CMD_BACK); - } - }; - _backItem.addSelectionListener(backSelectionListener); - - // Forward Browser - _forwardItem = new ToolItem(tb, SWT.PUSH); - _forwardItem.setImage(JSFUICommonPlugin.getDefault().getImage( - FORWARD_ITEM_IMAGE_FILE)); - _forwardItem.setToolTipText(JSFUICommonPlugin - .getResourceString("BrowserWindow.forward.tooltip")); //$NON-NLS-1$ - SelectionListener forwardSelectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - browserCmd(BROWSER_CMD_FORWARD); - } - }; - _forwardItem.addSelectionListener(forwardSelectionListener); - - // Stop Browser - ToolItem stopItem = new ToolItem(tb, SWT.PUSH); - stopItem - .setImage(JSFUICommonPlugin.getDefault().getImage(STOP_ITEM_IMAGE_FILE)); - stopItem.setToolTipText(JSFUICommonPlugin - .getResourceString("BrowserWindow.stop.tooltip")); //$NON-NLS-1$ - SelectionListener stopSelectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - browserCmd(BROWSER_CMD_STOP); - } - }; - stopItem.addSelectionListener(stopSelectionListener); - - // Refresh Browser - ToolItem refreshItem = new ToolItem(tb, SWT.PUSH); - refreshItem.setImage(JSFUICommonPlugin.getDefault().getImage( - REFRESH_ITEM_IMAGE_FILE)); - refreshItem.setToolTipText(JSFUICommonPlugin - .getResourceString("BrowserWindow.refresh.tooltip")); //$NON-NLS-1$ - SelectionListener refreshServiceSelectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - browserCmd(BROWSER_CMD_REFRESH); - } - }; - refreshItem.addSelectionListener(refreshServiceSelectionListener); - - if ((_startLocation != null) || (_startContent != null)) { - // Reload Browser. - ToolItem reloadItem = new ToolItem(tb, SWT.PUSH); - reloadItem.setImage(JSFUICommonPlugin.getDefault().getImage( - RELOAD_ITEM_IMAGE_FILE)); - reloadItem.setToolTipText(JSFUICommonPlugin - .getResourceString("BrowserWindow.reload.tooltip")); //$NON-NLS-1$ - SelectionListener reloadSelectionListener = new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - browserCmd(BROWSER_CMD_RELOAD); - } - }; - reloadItem.addSelectionListener(reloadSelectionListener); - } - } - - /** - * send the browser widget a command as defined by the cmd constant defines. - * @param cmd - * - * @return true if the command was successful. - */ - public boolean browserCmd(int cmd) { - switch (cmd) { - case BROWSER_CMD_BACK: - return _browser.back(); - case BROWSER_CMD_FORWARD: - return _browser.forward(); - case BROWSER_CMD_STOP: - _browser.stop(); - return true; - case BROWSER_CMD_REFRESH: - _browser.refresh(); - return true; - case BROWSER_CMD_RELOAD: - if (_startLocation != null) { - _browser.setUrl(_startLocation); - } else if (_startContent != null) { - _browser.setText(_startContent); - } - return true; - - } - return false; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/CollapsableSection.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/CollapsableSection.java deleted file mode 100644 index f787c2240..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/CollapsableSection.java +++ /dev/null @@ -1,148 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.ui.forms.events.ExpansionAdapter; -import org.eclipse.ui.forms.events.ExpansionEvent; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Section; - -/** - * Creates a class to be used to build a control for a collapseable area inside - * a scrollable composite. This will take care of scrollbar resize. - * - * Example use: - * - * CollapsableSection cs = new CollapsableSection(toolkit, scomp, "General", - * true) { public void setCollapsableContent(Composite composite) { // place - * your content on this composite.... } }); cs.createControl(composite, - * horizontalSpan); - * - * @author mengbo - * - */ -public abstract class CollapsableSection { - // internal fields needed for doing the section and computing the scrollbar - // on a collapse. - private FormToolkit _toolkit; - - private Section _section; - - private ScrolledComposite _scomp; - - private String _title; - - private int _expansionStyle; - - /** - * Creates a class to be used to build the control for a collapseable area. - * - * @param toolkit - * - * @param scomp - * the scrollable composite used inside the container. This is - * used to force resizing of the bars on dinking the control. - * @param title - * the string to place next to the collapsable icon. - * @param bCollapsed - * should this area start collapsed? - */ - public CollapsableSection(FormToolkit toolkit, ScrolledComposite scomp, - String title, boolean bCollapsed) { - _toolkit = toolkit; - _scomp = scomp; - _title = title; - _expansionStyle = ExpandableComposite.TWISTIE - | ExpandableComposite.FOCUS_TITLE; - if (bCollapsed) { - _expansionStyle |= ExpandableComposite.COMPACT; - } else { - _expansionStyle |= ExpandableComposite.EXPANDED; - } - } - - /** - * Build the GUI parts of the Collapsable area into the given composite. - * NOTE: you must set the layout on this composite before adding swt - * widgets. - * - * @param composite - */ - abstract public void setCollapsableContent(Composite composite); - - /** - * A convient way to build the widget into a control and place it on the - * page. NOTE: this method will build the Section and call - * setCollapsableContent with a composite to fill in the inner area. - * - * @param parent - * @param horizontalSpan - * how many columns should this control span. - * @return Control that was added to the composite. - */ - public Control createControl(Composite parent, int horizontalSpan) { - _section = _toolkit.createSection(parent, _expansionStyle); - _section.clientVerticalSpacing = 5; // space between the dink and the - // controls in when opened. - // _section.marginHeight = 5; // indents the entire section. - // _section.marginWidth = 5; // indents the entire section. - _section.setText(_title); - _toolkit.createCompositeSeparator(_section); - _section.addExpansionListener(new ExpansionAdapter() { - public void expansionStateChanged(ExpansionEvent event) { - SWTUtils.computeScrollArea(_scomp, (Composite) _scomp - .getContent()); - } - }); - - Composite content = new Composite(_section, SWT.NULL); - setCollapsableContent(content); - - _section.setClient(content); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = horizontalSpan; - _section.setLayoutData(gd); - - return _section; - } - - /** - * Programmatically changes expanded state. - * - * @param expanded - * the new expanded state - */ - public void setExpanded(boolean expanded) { - if (_section != null) { - _section.setExpanded(expanded); - - // NOTE: internal calling of expanding doesn't fire - // the event to resize. We do it here. - SWTUtils.computeScrollArea(_scomp, (Composite) _scomp.getContent()); - } - } - - /** - * Return the internal Section control for more advanced things. - * - * @return Section - */ - public Section getSection() { - return _section; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/FavoriteSection.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/FavoriteSection.java deleted file mode 100644 index be9882cb7..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/FavoriteSection.java +++ /dev/null @@ -1,152 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import java.util.Properties; - -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.utils.FavoriteConfigurations; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Group; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -/** - * Builds a favorites with the given name in the plugins resources. This build a - * generic looking favorites section. - * - * @author mengbo - */ -public abstract class FavoriteSection { - private FavoriteConfigurations _favorites; - - private Combo _favoriteCombo; - - /** - * @param plugin - * @param favoriteName - */ - public FavoriteSection(AbstractUIPlugin plugin, String favoriteName) { - _favorites = new FavoriteConfigurations(plugin, favoriteName); - } - - /** - * @param parent - * @param horizontalSpan - * @param comboMinWidth - * @return the combo - */ - public Combo createFavoriteGroup(Composite parent, int horizontalSpan, - int comboMinWidth) { - Group favGroup = SWTUtils.createGroup(parent, JSFUICommonPlugin - .getResourceString("favorites.group.label"), 4, horizontalSpan, //$NON-NLS-1$ - GridData.BEGINNING | GridData.CENTER); - - // Add favorite text field - SWTUtils.createLabel(favGroup, JSFUICommonPlugin - .getResourceString("favorites.label"), 1); //$NON-NLS-1$ - _favoriteCombo = SWTUtils.createCombo(favGroup, _favorites - .getFavoritesList(), 1, comboMinWidth, true); - _favoriteCombo.setToolTipText(JSFUICommonPlugin - .getResourceString("favorites.tooltip")); //$NON-NLS-1$ - _favoriteCombo.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - String favName = _favoriteCombo.getText().trim(); - if (favName.length() > 0) { - Properties favProp = _favorites.getFavorite(_favoriteCombo - .getText().trim()); - if (favProp != null) { - setFavorites(favProp); - } - } - } - }); - - // Add Save button - Button saveButton = SWTUtils.createPushButton(favGroup, JSFUICommonPlugin - .getResourceString("button.save")); //$NON-NLS-1$ - saveButton.setToolTipText(JSFUICommonPlugin - .getResourceString("favorites.save.tooltip")); //$NON-NLS-1$ - saveButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - String favName = _favoriteCombo.getText().trim(); - if (favName.length() == 0) { - favName = JSFUICommonPlugin - .getResourceString("favorites.default"); //$NON-NLS-1$ - } - Properties favProp = new Properties(); - saveFavorites(favProp); - - _favorites.addFavorite(favName, favProp); - _favorites.saveFavorites(); - - _favoriteCombo.removeAll(); - String[] names = _favorites.getFavoritesList(); - - _favoriteCombo.setItems(names); - _favoriteCombo.setText(favName); - } - }); - - // Add Remove button - Button removeButton = SWTUtils.createPushButton(favGroup, JSFUICommonPlugin - .getResourceString("button.remove")); //$NON-NLS-1$ - removeButton.setToolTipText(JSFUICommonPlugin - .getResourceString("favorites.remove.tooltip")); //$NON-NLS-1$ - removeButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent event) { - String favName = _favoriteCombo.getText().trim(); - if (favName.length() > 0) { - _favorites.removeFavorite(favName); - _favorites.saveFavorites(); - - removeFavorites(); - - _favoriteCombo.removeAll(); - String[] names = _favorites.getFavoritesList(); - _favoriteCombo.setItems(names); - } - } - }); - - return _favoriteCombo; - } - - /** - * This method will be called when a new favorite is set. This allows the - * caller to set their values from the properties supplied. - * - * @param prop - */ - public abstract void setFavorites(Properties prop); - - /** - * This method will be called when a new favorite is saved. This allows the - * caller to save their values into the properties supplied. - * - * @param prop - */ - public abstract void saveFavorites(Properties prop); - - /** - * This method will be called when the active favorite is removed. It allows - * for clearing fields. - */ - public void removeFavorites() { - // do nothing. - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/ImageContainer.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/ImageContainer.java deleted file mode 100644 index 8f697d164..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/ImageContainer.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - - -import org.eclipse.draw2d.ColorConstants; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.ControlAdapter; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.PaintEvent; -import org.eclipse.swt.events.PaintListener; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Composite; - -/** - * A general purpose class for displying an image in a composite. There is no - * eclipse tool for doing this other than CLabl which is bulkly. - * - * This was original written by Karl Reti. - * - * @author mengbo - */ -public class ImageContainer extends Composite { - private Image _image = null; - - private boolean _bCleanupImage; - - /** - * @param parent - */ - public ImageContainer(Composite parent) { - super(parent, SWT.NONE);// SWT.NO_BACKGROUND );//| - // SWT.NO_REDRAW_RESIZE); - setBackground(ColorConstants.white); - // paint the image - addPaintListener(new PaintListener() { - public void paintControl(PaintEvent e) { - if (_image != null) { - e.gc.drawImage(_image, 0, 0); - } - } - - }); - - addControlListener(new ControlAdapter() { - public void controlResized(ControlEvent e) { - setSize(_image.getBounds().width, _image.getBounds().height); - } - }); - - // tidy up - addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent e) { - if (_bCleanupImage && _image != null && !_image.isDisposed()) { - _image.dispose(); - } - } - }); - } - - /** - * @return Returns the image. - */ - public Image getImage() { - return _image; - } - - /** - * @return should the image be disposed of on cleanup. Set false if the - * image is cached. - */ - public boolean isCleanupImage() { - return _bCleanupImage; - } - - /** - * @param image - * The image to set. - */ - public void setImage(Image image) { - setImage(image, false); - } - - /** - * @param image - * The image to set. - * @param bCleanupImage - */ - public void setImage(Image image, boolean bCleanupImage) { - _image = image; - _bCleanupImage = bCleanupImage; - setSize(image.getBounds().width, image.getBounds().height); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/IntroductionSection.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/IntroductionSection.java deleted file mode 100644 index a022c1b63..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/IntroductionSection.java +++ /dev/null @@ -1,351 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ - -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.help.HelpSystem; -import org.eclipse.help.IContext; -import org.eclipse.help.IHelpResource; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.forms.IManagedForm; -import org.eclipse.ui.forms.SectionPart; -import org.eclipse.ui.forms.events.HyperlinkAdapter; -import org.eclipse.ui.forms.events.HyperlinkEvent; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.FormText; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Hyperlink; -import org.eclipse.ui.forms.widgets.ImageHyperlink; -import org.eclipse.ui.forms.widgets.Section; -import org.eclipse.ui.forms.widgets.TableWrapData; -import org.eclipse.ui.forms.widgets.TableWrapLayout; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -/** - * Provides a standard looking introduction section for a intro page for the - * editors. This was taken and is suppose to look like the standard Sybase - * workspace service editors intro page. - * - * this was original written by Collinsc - * - * TODO: Should this be moved into the facesconfig ui plugin since it is only - * really used there? - * - * @author collinsc,jchoi - */ -public class IntroductionSection extends SectionPart { - - private static final String HELP_IMAGE_FILE = "help.gif"; //$NON-NLS-1$ - - private static Logger _log = JSFUICommonPlugin - .getLogger(IntroductionSection.class); - - private String _editorId; - - private FormToolkit _toolkit; - - // private ImageHyperlink _helpImage; - private Composite _textClient; - - private String _helpContextId; - - private String _helpTooltip; - - /** - * Basic constructor - no help with this one. - * - * @param editorId - * id of the editor this page is for. - * @param managedForm - * @param toolkit - */ - public IntroductionSection(String editorId, IManagedForm managedForm, - FormToolkit toolkit) { - this(editorId, managedForm, toolkit, null, null); - } - - /** - * Constructor with help option. - * - * @param editorId - * id of the editor this page is for. - * @param managedForm - * @param toolkit - * @param contextId - * @param helpTooltip - */ - public IntroductionSection(String editorId, IManagedForm managedForm, - FormToolkit toolkit, final String contextId, String helpTooltip) { - super(managedForm.getForm().getBody(), toolkit, - ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); - super.initialize(managedForm); - this._editorId = editorId; - this._toolkit = toolkit; - this._helpContextId = contextId; - this._helpTooltip = helpTooltip; - - this._textClient = this._toolkit.createComposite(getSection(), SWT.NONE); - this._textClient.setSize(32, 16); - - RowLayout rowLayout = new RowLayout(); - rowLayout.wrap = false; - rowLayout.pack = false; - rowLayout.justify = true; - rowLayout.type = SWT.HORIZONTAL; - rowLayout.marginLeft = 0; - rowLayout.marginTop = 0; - rowLayout.marginRight = 0; - rowLayout.marginBottom = 0; - rowLayout.spacing = 0; - this._textClient.setLayout(rowLayout); - - this._toolkit.adapt(this._textClient, true, true); - getSection().setTextClient(this._textClient); - - if (this._helpContextId != null) { - // setup the help image. - ImageHyperlink helpImage = new ImageHyperlink(this._textClient, - SWT.NONE); - this._toolkit.adapt(helpImage, true, true); - helpImage.setImage(JSFUICommonPlugin.getDefault().getImage(HELP_IMAGE_FILE)); - if (this._helpTooltip != null) { - helpImage.setToolTipText(this._helpTooltip); - } - helpImage.setBackground(getSection() - .getTitleBarGradientBackground()); - helpImage.addHyperlinkListener(new HyperlinkAdapter() { - public void linkActivated(HyperlinkEvent e) { - IContext context = HelpSystem.getContext(_helpContextId); - if (context != null) { - IHelpResource[] topics = context.getRelatedTopics(); - if (topics != null && topics.length == 1) { - PlatformUI.getWorkbench().getHelpSystem().displayHelpResource(topics[0] - .getHref()); - } else { - PlatformUI.getWorkbench().getHelpSystem().displayHelp(_helpContextId); - } - } - } - }); - } - - Composite client = this._toolkit.createComposite(getSection()); - createClient(client, this._toolkit); - getSection().setClient(client); - } - - private Composite createClient(Composite container, FormToolkit factory) { - TableWrapLayout layout = new TableWrapLayout(); - layout.numColumns = 2; - layout.makeColumnsEqualWidth = false; - layout.horizontalSpacing = 20; - layout.verticalSpacing = 20; - container.setLayout(layout); - - IConfigurationElement element = getExtensions(); - - if (element != null) { - setPageDetails(element); - - IConfigurationElement[] children = element.getChildren(); - for (int ii = 0; ii < children.length; ii++) { - processItems(container, factory, children[ii]); - } - } else { - setText(Messages.IntroductionSection_noIntroTitle); - - setDescription(Messages.IntroductionSection_noIntroDescription); - } - - factory.paintBordersFor(container); - PlatformUI.getWorkbench().getHelpSystem().setHelp(container, _helpContextId); - return container; - } - - /** - * set the page details from the extensionpoint - * - * @param element - */ - private void setPageDetails(IConfigurationElement element) { - setText(element.getAttribute("name")); //$NON-NLS-1$ - setDescription(element.getAttribute("description")); //$NON-NLS-1$ - } - - /** - * add the extension elements to the page - * - * @param parent - * @param toolkit_ - * @param element - */ - private void processItems(Composite parent, FormToolkit toolkit_, - IConfigurationElement element) { - String hyperlink = element.getAttribute("hyperlink"); //$NON-NLS-1$ - String iconPath = element.getAttribute("icon"); //$NON-NLS-1$ - String text = element.getAttribute("text"); //$NON-NLS-1$ - String heading = element.getAttribute("heading"); //$NON-NLS-1$ - String action = element.getAttribute("hyperlinkaction"); //$NON-NLS-1$ - //String actionparameters = element.getAttribute("actionparameters"); //$NON-NLS-1$ - - if (iconPath != null && iconPath.length() > 0) { - // add an icon to the page - String iconName; - if (iconPath.indexOf(IPath.SEPARATOR) != -1) { - iconName = new Path(iconPath).lastSegment(); - } else { - iconName = iconPath; - } - - ImageDescriptor imageDescriptor = AbstractUIPlugin - .imageDescriptorFromPlugin( - element.getDeclaringExtension() - .getContributor().getName(), iconPath); - - if (imageDescriptor != null) - { - ImageRegistry imageRegistry = - JSFUICommonPlugin.getDefault().getImageRegistry(); - - - Image image = imageRegistry.get(iconName); - - if (image == null) - { - image = imageDescriptor.createImage(); - - if (image != null) - { - imageRegistry.put(iconName, image); - } - else - { - image = ImageDescriptor.getMissingImageDescriptor().createImage(); - } - } - - if (image != null) - { - ImageContainer img = new ImageContainer(parent); - img.setImage(image); - TableWrapData td = new TableWrapData(); - td.rowspan = 2; - img.setLayoutData(td); - } - else - { - JSFUICommonPlugin.getLogger(this.getClass()).error(new Throwable("Image not created for "+element)); //$NON-NLS-1$ - } - } - else - { - JSFUICommonPlugin.getLogger(this.getClass()).error(new Throwable("Image Descriptor not found for "+element)); //$NON-NLS-1$ - } - } - - if (heading != null && heading.length() > 0) { - // add a header - Label lbl = toolkit_.createLabel(parent, heading); - lbl.setFont(JFaceResources.getHeaderFont()); - } - - if (hyperlink != null && hyperlink.length() > 0) { - Hyperlink hypr = toolkit_.createHyperlink(parent, hyperlink, - SWT.NONE); - if (action != null && action.length() > 0) { - try { - final IAction thisAction = (IAction) element - .createExecutableExtension("hyperlinkaction"); //$NON-NLS-1$ - hypr.addHyperlinkListener(new HyperlinkAdapter() { - public void linkActivated(HyperlinkEvent e) { - thisAction.run(); - } - }); - } catch (Exception ee) { - // log.IntroductionSection.action.error=Failed to launch the - // link {0}. - _log.error("log.IntroductionSection.action.error", //$NON-NLS-1$ - hyperlink, ee); - JSFUICommonPlugin.getAlerts().detailError(hyperlink, - "log.IntroductionSection.action.error", hyperlink, //$NON-NLS-1$ - ee); - } - } - } - - if (text != null && text.length() > 0) { - FormText form = toolkit_.createFormText(parent, false); - form.setText(text, false, false); - } - } - - /** - * Get the extension elements for the Introduction pages - */ - private IConfigurationElement getExtensions() { - // find all service editor page extensions - IConfigurationElement element = null; - - // find all service editor parameter dialog extensions - IConfigurationElement[] elements = Platform - .getExtensionRegistry() - .getConfigurationElementsFor( - "org.eclipse.jst.jsf.common.ui.introductionPage"); //$NON-NLS-1$ - if (elements.length > 0) { - for (int ii = 0; ii < elements.length; ii++) { - // get extensions for this dialog - // String extPluginId = - // elements[ii].getDeclaringExtension().getNamespace(); - String editorId1 = elements[ii].getDeclaringExtension() - .getSimpleIdentifier(); - - // see if we have any contributuins of dialogs - if (this._editorId.equals(editorId1)) { - element = elements[ii]; - break; - } - } - } - return element; - } - - private void setText(String text) { - getSection().setText(text); - } - - private void setDescription(String text) { - getSection().setDescription(text); - } - - /** - * Set this section's layout data - * @param layoutData - */ - public void setLayoutData(Object layoutData) { - getSection().setLayoutData(layoutData); - } -}
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Messages.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Messages.java deleted file mode 100644 index b8772361b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/Messages.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.osgi.util.NLS; - -/** - * String resource handler. - * - * @author Debajit Adhikary - Oracle - */ - -public class Messages extends NLS { - - private static final String BUNDLE_NAME = "org.eclipse.jst.jsf.common.ui.internal.guiutils.messages"; //$NON-NLS-1$ - - /** - * See messages.properties. - */ - public static String IntroductionSection_noIntroDescription; - - /** - * See messages.properties. - */ - public static String IntroductionSection_noIntroTitle; - - /** - * See messages.properties. - */ - public static String BrowserWindow_loading; - - - static { - // initialize resource bundle - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/OverviewSection.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/OverviewSection.java deleted file mode 100644 index 4654c40f3..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/OverviewSection.java +++ /dev/null @@ -1,287 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.Platform; -import org.eclipse.help.HelpSystem; -import org.eclipse.help.IContext; -import org.eclipse.help.IHelpResource; -import org.eclipse.jface.action.IAction; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.RowLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.forms.IManagedForm; -import org.eclipse.ui.forms.SectionPart; -import org.eclipse.ui.forms.editor.FormEditor; -import org.eclipse.ui.forms.events.HyperlinkAdapter; -import org.eclipse.ui.forms.events.HyperlinkEvent; -import org.eclipse.ui.forms.widgets.ExpandableComposite; -import org.eclipse.ui.forms.widgets.FormText; -import org.eclipse.ui.forms.widgets.FormToolkit; -import org.eclipse.ui.forms.widgets.Hyperlink; -import org.eclipse.ui.forms.widgets.ImageHyperlink; -import org.eclipse.ui.forms.widgets.Section; - - -/** - * @author jchoi - * @version - */ -public class OverviewSection extends SectionPart { - - private static final String HELP_IMAGE_FILE = "help.gif"; //$NON-NLS-1$ - - private static Logger log = JSFUICommonPlugin.getLogger(OverviewSection.class); - - private String editorId; - - private FormToolkit toolkit; - - private ImageHyperlink helpImage; - - private Composite textClient; - - private String helpContextId; - - private String helpTooltip; - - /** - * @param editorId - * @param managedForm - * @param toolkit - */ - public OverviewSection(String editorId, IManagedForm managedForm, - FormToolkit toolkit) { - this(editorId, managedForm, toolkit, null, null); - - } - - /** - * Constructor with help option. - * - * @param editorId - * id of the editor this page is for. - * @param managedForm - * @param toolkit - * @param helpContextId - * @param helpTooltip - */ - public OverviewSection(String editorId, IManagedForm managedForm, - FormToolkit toolkit, String helpContextId, String helpTooltip) { - super(managedForm.getForm().getBody(), toolkit, - ExpandableComposite.TITLE_BAR | Section.DESCRIPTION); - super.initialize(managedForm); - this.editorId = editorId; - this.toolkit = toolkit; - this.helpContextId = helpContextId; - this.helpTooltip = helpTooltip; - - this.textClient = this.toolkit.createComposite(getSection(), SWT.NONE); - this.textClient.setSize(32, 16); - - init(); - - Composite client = this.toolkit.createComposite(getSection()); - //createClient(client, this.toolkit); - getSection().setClient(client); - } - - /** - * @param editor - * @param managedForm - * @param toolkit - * @param style - */ - public OverviewSection(FormEditor editor, IManagedForm managedForm, - FormToolkit toolkit, int style) { - super(managedForm.getForm().getBody(), toolkit, - ExpandableComposite.TITLE_BAR | style); - super.initialize(managedForm); - this.toolkit = toolkit; - - this.textClient = this.toolkit.createComposite(getSection(), SWT.NONE); - this.textClient.setSize(32, 16); - - init(); - } - - /** - * @param editor - * @param managedForm - * @param toolkit - * @param style - * @param helpContextId - * @param helpTooltip - */ - public OverviewSection(FormEditor editor, IManagedForm managedForm, - FormToolkit toolkit, int style, String helpContextId, - String helpTooltip) { - super(managedForm.getForm().getBody(), toolkit, - ExpandableComposite.TITLE_BAR | style); - super.initialize(managedForm); - this.toolkit = toolkit; - - this.textClient = toolkit.createComposite(getSection(), SWT.NONE); - this.textClient.setSize(32, 16); - this.helpContextId = helpContextId; - this.helpTooltip = helpTooltip; - init(); - } - - /** - * - */ - public void initialize() { - Composite client = toolkit.createComposite(getSection()); - //createClient(client, toolkit); - getSection().setClient(client); - } - - private void init() { - RowLayout rowLayout = new RowLayout(); - rowLayout.wrap = false; - rowLayout.pack = false; - rowLayout.justify = true; - rowLayout.type = SWT.HORIZONTAL; - rowLayout.marginLeft = 0; - rowLayout.marginTop = 0; - rowLayout.marginRight = 0; - rowLayout.marginBottom = 0; - rowLayout.spacing = 0; - textClient.setLayout(rowLayout); - - helpImage = new ImageHyperlink(textClient, SWT.NONE); - toolkit.adapt(helpImage, true, true); - toolkit.adapt(textClient, true, true); - helpImage.setImage(JSFUICommonPlugin.getDefault().getImage(HELP_IMAGE_FILE)); - getSection().setTextClient(textClient); - if (helpTooltip != null) { - helpImage.setToolTipText(helpTooltip); - } - helpImage.setBackground(getSection().getTitleBarGradientBackground()); - helpImage.addHyperlinkListener(new HyperlinkAdapter() { - public void linkActivated(HyperlinkEvent e) { - IContext context = HelpSystem.getContext(helpContextId); - if (context != null) { - IHelpResource[] topics = context.getRelatedTopics(); - if (topics != null && topics.length == 1) { - PlatformUI.getWorkbench().getHelpSystem().displayHelpResource(topics[0].getHref()); - } else { - PlatformUI.getWorkbench().getHelpSystem().displayHelp(helpContextId); - } - } - } - }); - - /* - * Composite client = _toolkit.createComposite(getSection()); - * createClient(client, _toolkit); getSection().setClient(client); - */ - } - - /** - * set the page details from the extensionpoint - * - * @param element - */ - protected void setPageDetails(IConfigurationElement element) { - setText(element.getAttribute("name")); //$NON-NLS-1$ - setDescription(element.getAttribute("description")); //$NON-NLS-1$ - } - - /** - * add the extension elements to the page - * - * @param parent - * @param toolkit_ - * @param element - */ - public void processItems(Composite parent, FormToolkit toolkit_, - IConfigurationElement element) { - String hyperlink = element.getAttribute("hyperlink"); //$NON-NLS-1$ - String text = element.getAttribute("text"); //$NON-NLS-1$ - String action = element.getAttribute("hyperlinkaction"); //$NON-NLS-1$ - //String actionparameters = element.getAttribute("actionparameters"); //$NON-NLS-1$ - - if (hyperlink != null && hyperlink.length() > 0) { - Hyperlink hypr = toolkit_.createHyperlink(parent, hyperlink, - SWT.NONE); - if (action != null && action.length() > 0) { - try { - final IAction thisAction = (IAction) element - .createExecutableExtension("hyperlinkaction"); //$NON-NLS-1$ - hypr.addHyperlinkListener(new HyperlinkAdapter() { - public void linkActivated(HyperlinkEvent e) { - thisAction.run(); - } - }); - } catch (Exception ee) { - // log.IntroductionSection.action.error=Failed to launch the - // link {0}. - log - .error("log.OverviewSection.action.error", //$NON-NLS-1$ - hyperlink, ee); - JSFUICommonPlugin.getAlerts().detailError(hyperlink, - "log.OverviewSection.action.error", hyperlink, ee); //$NON-NLS-1$ - } - } - } - - if (text != null && text.length() > 0) { - FormText form = toolkit_.createFormText(parent, false); - form.setText(text, false, false); - } - } - - /** - * Get the extension elements for the Introduction pages - * @param extensionPoint - * @return the configuration element - */ - public IConfigurationElement getExtensions(String extensionPoint) { - // find all service editor page extensions - IConfigurationElement element = null; - - // find all service editor parameter dialog extensions - IConfigurationElement[] elements = Platform.getExtensionRegistry() - .getConfigurationElementsFor(extensionPoint); - if (elements.length > 0) { - for (int ii = 0; ii < elements.length; ii++) { - // get extensions for this dialog - // String extPluginId = - // elements[ii].getDeclaringExtension().getNamespace(); - String anEditorId = elements[ii].getDeclaringExtension() - .getSimpleIdentifier(); - - // see if we have any contributuins of dialogs - if (this.editorId.equals(anEditorId)) { - element = elements[ii]; - break; - } - } - } - return element; - } - - private void setText(String text) { - getSection().setText(text); - } - - private void setDescription(String text) { - getSection().setDescription(text); - - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/SWTUtils.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/SWTUtils.java deleted file mode 100644 index 862b26bc2..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/SWTUtils.java +++ /dev/null @@ -1,1032 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.List; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.Text; - -/** - * This utility class provides convenience methods in creating controls on - * preference pages. - * - * @author mengbo - */ -public class SWTUtils { - // Defaults of controls - private static final int DEFAULT_BUTTON_WIDTH = 70; - - private static final int DEFAULT_COMBO_WIDTH = 100; - - private static final int DEFAULT_TEXTBOX_WIDTH = 100; - - private static final int DEFAULT_RADIO_FILL = GridData.HORIZONTAL_ALIGN_BEGINNING - | GridData.VERTICAL_ALIGN_CENTER; - - /** - * Creates a new checkbox and sets the default layout data. - * - * @param parent - * the composite in which to create the checkbox - * @return the new checkbox - */ - public static Button createCheckBox(Composite parent) { - return createCheckBox(parent, null, 1, 0); - } - - /** - * Creates a new checkbox and sets the default layout data. - * - * @param parent - * the composite in which to create the checkbox - * @param label - * the string to set into the checkbox - * @param numColumns - * the number of columns the new checkbox is to occupy - * @return the new checkbox - */ - public static Button createCheckBox(Composite parent, String label, - int numColumns) { - return createCheckBox(parent, label, numColumns, 0); - } - - /** - * Creates a new checkbox and sets the default layout data. - * - * @param parent - * the composite in which to create the checkbox - * @param label - * the string to set into the checkbox - * @param numColumns - * the number of columns the new checkbox is to occupy - * @param indent - * the number of pixels to indent from the left - * @return the new checkbox - */ - public static Button createCheckBox(Composite parent, String label, - int numColumns, int indent) { - Button button = new Button(parent, SWT.CHECK | SWT.LEFT); - if (label == null) { - button.setAlignment(SWT.CENTER); - } - GridData data = new GridData(GridData.FILL); - data.horizontalSpan = numColumns; - data.horizontalIndent = indent; - button.setLayoutData(data); - if (label != null) { - button.setText(label); - } - return button; - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param items - * the items in the combo - * @param numColumns - * the number of columns the new combo is to occupy - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String[] items, - int numColumns) { - return createCombo(parent, items, numColumns, DEFAULT_COMBO_WIDTH); - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param tokenString - * a tokenized string that will be split into the fields. - * @param numColumns - * the number of columns the new combo is to occupy - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String tokenString, - int numColumns) { - return createCombo(parent, getTokenNames(tokenString), numColumns, - DEFAULT_COMBO_WIDTH); - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param tokenString - * a tokenized string that will be split into the fields. - * @param numColumns - * the number of columns the new combo is to occupy - * @param minWidth - * minimum width of combo box in pixels - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String tokenString, - int numColumns, int minWidth) { - return createCombo(parent, getTokenNames(tokenString), numColumns, - minWidth); - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param items - * the items in the combo - * @param numColumns - * the number of columns the new combo is to occupy - * @param minWidth - * minimum width of combo box in pixels - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String[] items, - int numColumns, int minWidth) { - return createCombo(parent, items, numColumns, minWidth, false); - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param tokenString - * @param numColumns - * the number of columns the new combo is to occupy - * @param minWidth - * minimum width of combo box in pixels - * @param editable - * whether the items in the combo is editable - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String tokenString, - int numColumns, int minWidth, boolean editable) { - return createCombo(parent, getTokenNames(tokenString), numColumns, - minWidth, editable); - } - - /** - * Creates a combo box and sets the default layout data. - * - * @param parent - * the composite in which to create the combo - * @param items - * the items in the combo - * @param numColumns - * the number of columns the new combo is to occupy - * @param minWidth - * minimum width of combo box in pixels - * @param editable - * whether the items in the combo is editable - * @return the new combo box - */ - public static Combo createCombo(Composite parent, String[] items, - int numColumns, int minWidth, boolean editable) { - Combo combo; - GridData data; - if (editable) { - combo = new Combo(parent, SWT.DROP_DOWN); - data = new GridData(GridData.FILL_HORIZONTAL); - } else { - combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY); - data = new GridData(GridData.FILL); - } - data.horizontalSpan = numColumns; - data.widthHint = minWidth; - combo.setLayoutData(data); - combo.setItems(items); - return combo; - } - - /** - * Creates composite control and sets the default layout data. - * - * @param parent - * the parent of the new composite - * @param numColumns - * the number of columns for the new composite - * @return the newly-created coposite - */ - public static Composite createComposite(Composite parent, int numColumns) { - return createComposite(parent, numColumns, -1, -1, - GridData.FILL_HORIZONTAL, -1, -1, -1); - } - - /** - * Creates composite control and sets the default layout data. - * - * @param parent - * the parent of the new composite - * @param numColumns - * the number of columns for the new composite - * @param verticalSpacing - * the spacing between rows. - * @param horizontalSpan - * the span for this new composite over the original composite. - * @return the newly-created coposite - */ - public static Composite createComposite(Composite parent, int numColumns, - int verticalSpacing, int horizontalSpan) { - return createComposite(parent, numColumns, verticalSpacing, - horizontalSpan, GridData.FILL_HORIZONTAL, -1, -1, -1); - } - - /** - * Creates composite control and sets the default layout data. - * - * @param parent - * the parent of the new composite - * @param numColumns - * the number of columns for the new composite - * @param verticalSpacing - * the spacing between rows. - * @param horizontalSpan - * the span for this new composite over the original composite. - * @param gridDataFill - * the fill to use for this composite. - * @return the newly-created coposite - */ - public static Composite createComposite(Composite parent, int numColumns, - int verticalSpacing, int horizontalSpan, int gridDataFill) { - return createComposite(parent, numColumns, verticalSpacing, - horizontalSpan, gridDataFill, -1, -1, -1); - } - - /** - * Creates composite control and sets the default layout data. - * - * @param parent - * the parent of the new composite - * @param numColumns - * the number of columns for the new composite - * @param verticalSpacing - * the spacing between rows. - * @param horizontalSpan - * the span for this new composite over the original composite. - * @param gridDataFill - * the fill to use for this composite. - * @param horizontalSpacing - * the spacing between objects. - * @param marginWidth - * the spacing at start and end of composite. - * @param marginHeight - * the spacing above and below composite. - * @return the newly-created coposite - */ - public static Composite createComposite(Composite parent, int numColumns, - int verticalSpacing, int horizontalSpan, int gridDataFill, - int horizontalSpacing, int marginWidth, int marginHeight) { - Composite composite = new Composite(parent, SWT.NULL); - GridLayout layout = new GridLayout(); - layout.numColumns = numColumns; - if (verticalSpacing >= 0) { - layout.verticalSpacing = verticalSpacing; - } - if (horizontalSpacing >= 0) { - layout.horizontalSpacing = horizontalSpacing; - } - if (marginWidth >= 0) { - layout.marginWidth = marginWidth; - } - if (marginHeight >= 0) { - layout.marginHeight = marginHeight; - } - composite.setLayout(layout); - GridData gd = new GridData(gridDataFill); - if (horizontalSpan > 0) { - gd.horizontalSpan = horizontalSpan; - } - composite.setLayoutData(gd); - - return composite; - } - - /** - * Utility method that creates a group and sets the default layout data. - * - * @param parent - * the parent for the new group - * @param title - * the label for the new group - * @param numColumns - * the number of columns for the new group - * @return the newly created group - */ - public static Group createGroup(Composite parent, String title, - int numColumns) { - return createGroup(parent, title, numColumns, -1, - GridData.FILL_HORIZONTAL); - } - - /** - * Utility method that creates a group and sets the default layout data. - * - * @param parent - * the parent for the new group - * @param title - * the label for the new group - * @param numColumns - * the number of columns for the new group - * @param horizontalSpan - * the number of columns this group should span on the parent - * composite. - * @param gridDataFill - * the fill style of the new group -- set to for filling just - * around the object: GridData.BEGINNING | GridData.CENTER - * @return the newly created group - */ - public static Group createGroup(Composite parent, String title, - int numColumns, int horizontalSpan, int gridDataFill) { - Group group = new Group(parent, SWT.SHADOW_ETCHED_IN); - GridLayout layout = new GridLayout(); - layout.numColumns = numColumns; - group.setLayout(layout); - GridData data = new GridData(gridDataFill); - - if (horizontalSpan > 0) { - data.horizontalSpan = horizontalSpan; - } - group.setLayoutData(data); - group.setText(title); - return group; - } - - /** - * Utility method that creates a label instance and sets the default layout - * data. - * - * @param parent - * the parent for the new label - * @param text - * the text for the new label - * @param numColumns - * the number of columns for the new composite - * @return the new label - */ - public static Label createLabel(Composite parent, String text, - int numColumns) { - return createLabel(parent, text, numColumns, 0); - } - - /** - * Utility method that creates a label instance and sets the default layout - * data. - * - * @param parent - * the parent for the new label - * @param text - * the text for the new label - * @param numColumns - * the number of columns for the new composite - * @param indent - * number of pixels to indent from the left - * @return the new label - */ - public static Label createLabel(Composite parent, String text, - int numColumns, int indent) { - Label label = new Label(parent, SWT.LEFT); - GridData data = new GridData(); - data.horizontalSpan = numColumns; - data.horizontalAlignment = GridData.FILL; - data.horizontalIndent = indent; - label.setLayoutData(data); - label.setText(text); - return label; - } - - /** - * Create a image label for sticking in a composite. The backgroud color is - * optional. Because images can have "transparent" natures, you might want - * to say the background is something other than the defaults composites - * background. - * - * NOTE: the caller is responsible for cleanup of the image and color - * objects. - * - * @param parent - * the parent for the new label - * @param theImage - * the image for the new label - * @param numColumns - * the number of columns for the new composite - * @param background - * pass null to use the composites background. - * @return the new label - */ - public static Label createLabelImage(Composite parent, Image theImage, - int numColumns, Color background) { - Label label = new Label(parent, SWT.LEFT); - GridData data = new GridData(); - data.horizontalSpan = numColumns; - data.horizontalAlignment = GridData.FILL; - label.setLayoutData(data); - if (background != null) { - label.setBackground(background); - } - label.setImage(theImage); - return label; - } - - /** - * Utility method that creates a push button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param label - * the label for the new button - * @return the newly-created button - */ - public static Button createPushButton(Composite parent, String label) { - return createPushButton(parent, label, DEFAULT_BUTTON_WIDTH); - } - - /** - * Utility method that creates a push button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param label - * the label for the new button - * @param widthHint - * use this width for the button. - * @return the newly-created button - */ - public static Button createPushButton(Composite parent, String label, - int widthHint) { - Button button = new Button(parent, SWT.PUSH); - GridData data = new GridData(); - data.horizontalAlignment = GridData.FILL_HORIZONTAL; - data.widthHint = widthHint; - button.setLayoutData(data); - button.setText(label); - return button; - } - - /** - * Utility method that creates a push button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param theImage - * the label for the new button - * @param widthHint - * use this width for the button. - * @return the newly-created button - */ - public static Button createPushButton(Composite parent, Image theImage, - int widthHint) { - Button button = new Button(parent, SWT.PUSH); - GridData data = new GridData(); - data.horizontalAlignment = GridData.FILL_HORIZONTAL; - data.widthHint = widthHint; - button.setLayoutData(data); - button.setImage(theImage); - button.setAlignment(SWT.CENTER); - return button; - } - - /** - * Utility method that creates a radio button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param label - * the label for the new button - * @return the newly-created button - */ - public static Button createRadioButton(Composite parent, String label) { - return createRadioButton(parent, label, DEFAULT_RADIO_FILL); - } - - /** - * Utility method that creates a radio button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param label - * the label for the new button - * @param gridDataFill - * @return the newly-created button - */ - public static Button createRadioButton(Composite parent, String label, - int gridDataFill) { - return createRadioButton(parent, label, gridDataFill, 1); - } - - /** - * Utility method that creates a radio button instance and sets the default - * layout data. - * - * @param parent - * the parent for the new button - * @param label - * the label for the new button - * @param gridDataFill - * @param horizontalSpan - * number of columns occupied by button - * @return the newly-created button - */ - public static Button createRadioButton(Composite parent, String label, - int gridDataFill, int horizontalSpan) { - Button button = new Button(parent, SWT.RADIO | SWT.LEFT); - GridData data = new GridData(gridDataFill); - data.horizontalSpan = horizontalSpan; - button.setLayoutData(data); - button.setText(label); - return button; - } - - /** - * Utility method that creates an empty line - * - * @param parent - * the parent for the new label - * @param numColumns - * the number of columns for the new composite - */ - public static void createSpacer(Composite parent, int numColumns) { - createSpacer(parent, numColumns, 0); - } - - /** - * Utility method that creates an empty line - * - * @param parent - * the parent for the new label - * @param numColumns - * the number of columns for the new composite - * @param minWidth - * minimum width of spacer - */ - public static void createSpacer(Composite parent, int numColumns, - int minWidth) { - Label label = new Label(parent, SWT.NONE); - GridData data = new GridData(); - data.horizontalSpan = numColumns; - data.widthHint = minWidth; - label.setLayoutData(data); - } - - /** - * Create a separator that goes across the entire page - * - * @param parent - * the parent for the new label - * @param numColumns - * the number of columns for the new composite - */ - public static void createSeparator(Composite parent, int numColumns) { - Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - GridData data = new GridData(); - data.horizontalSpan = numColumns; - data.horizontalAlignment = GridData.FILL; - data.grabExcessHorizontalSpace = true; - separator.setLayoutData(data); - } - - /** - * Create a table from a Composite object - * - * @param composite - * the Composite this table is to be created from - * @param tokenString - * A string containing names of the columns in the order that - * they should be displayed in the table with each column - * separated by a comma(',') or null if no columns need to be - * created. - * @param tablewidth - * the minimum width for the table - * @param tableHeight - * @return the new table - */ - public static Table createTable(Composite composite, String tokenString, - int tablewidth, int tableHeight) { - // SINGLE, MULTI, CHECK, FULL_SELECTION, HIDE_SELECTION - int style = SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE | SWT.BORDER - | SWT.FULL_SELECTION; - Table table = new Table(composite, style); - GridData gridData = new GridData(GridData.FILL_BOTH); - if (tablewidth > 0) { - gridData.widthHint = tablewidth; - } - if (tableHeight > 0) { - gridData.heightHint = tableHeight; - } - table.setLayoutData(gridData); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - if (tokenString != null) { - String[] columns = getTokenNames(tokenString); - - int columnSize = 50; - if (tablewidth > 0) { - columnSize = tablewidth / columns.length; - } - for (int ii = 0; ii < columns.length; ii++) { - /*(void)*/ createTableColumn(table, columns[ii], ii, - columnSize); - } - } - - return table; - } - - /** - * Create a table from a Composite object - * - * @param composite - * the Composite this table is to be created from - * @param columns - * A string array containing names of the columns in the order - * that they should be displayed in the table, or null if no - * columns need to be created. - * @param tablewidth - * the minimum width for the table - * @return the new table - */ - public static Table createTable(Composite composite, String[] columns, - int tablewidth) { - int style = SWT.BORDER | SWT.FULL_SELECTION; - Table table = new Table(composite, style); - GridData gridData = new GridData(GridData.FILL_BOTH); - gridData.widthHint = tablewidth; - table.setLayoutData(gridData); - table.setHeaderVisible(true); - table.setLinesVisible(true); - - if (columns != null) { - for (int i = 0; i < columns.length; i++) { - /*(void)*/ createTableColumn(table, columns[i], i); - } - } - - return table; - } - - /** - * Create a table column - * - * @param parent - * the table that contains this column - * @param name - * name of this column - * @param index - * the column within the parent composite - * @return the new table column - */ - public static TableColumn createTableColumn(Table parent, String name, - int index) { - TableColumn column = new TableColumn(parent, SWT.LEFT, index); - column.setText(name); - return column; - } - - /** - * Create a table column with the image and the width of the column is set - * to the image width. - * - * @param parent - * the table that contains this column - * @param image - * iamge for this column - * @param index - * @return the new table column - */ - public static TableColumn createTableColumn(Table parent, Image image, - int index) { - TableColumn column = new TableColumn(parent, SWT.LEFT, index); - column.setImage(image); - column.setWidth(image.getBounds().width); - column.setResizable(false); - return column; - } - - /** - * Create a table column - * - * @param parent - * the table that contains this column - * @param name - * name of this column - * @param index - * the column within the parent composite - * @param tablewidth - * the width for the column - * @return the new table column - */ - public static TableColumn createTableColumn(Table parent, String name, - int index, int tablewidth) { - TableColumn column = new TableColumn(parent, SWT.LEFT, index); - column.setText(name); - column.setWidth(tablewidth); - return column; - } - - /** - * Create a text field - * - * @param parent - * the parent of the new text field - * @return the new text field - */ - public static Text createTextBox(Composite parent) { - return createTextBox(parent, 1, DEFAULT_TEXTBOX_WIDTH); - } - - /** - * Create a text field - * - * @param parent - * the parent of the new text field - * @param text - * @return the new text field - */ - public static Text createTextBox(Composite parent, String text) { - Text textbox = createTextBox(parent, 1); - textbox.setText(text); - return textbox; - } - - /** - * Create a text field - * - * @param parent - * the parent of the new text field - * @param numColumns - * number of columns the text box is to occupy - * @return the new text field - */ - public static Text createTextBox(Composite parent, int numColumns) { - return createTextBox(parent, numColumns, DEFAULT_TEXTBOX_WIDTH); - } - - /** - * Create a text field - * - * @param parent - * the parent of the new text field - * @param numColumns - * number of columns the text box is to occupy - * @param minWidth - * minimum width of text field - * @return the new text field - */ - public static Text createTextBox(Composite parent, int numColumns, - int minWidth) { - return createTextBox(parent, numColumns, minWidth, SWT.DEFAULT); - } - - /** - * Create a text field - * - * @param parent - * the parent of the new text field - * @param numColumns - * number of columns the text box is to occupy - * @param minWidth - * minimum width of text field - * @param minHeight - * @return the new text field - */ - public static Text createTextBox(Composite parent, int numColumns, - int minWidth, int minHeight) { - Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); - GridData data = new GridData(GridData.FILL); - data.horizontalSpan = numColumns; - data.widthHint = minWidth; - data.heightHint = minHeight; - text.setLayoutData(data); - return text; - } - - /** - * Create a text field that is scrollable. - * - * @param parent - * the parent of the new text field - * @param numColumns - * number of columns the text box is to occupy - * @param minWidth - * minimum width of text field - * @param minHeight - * minimum height of text field - * @return the new text field - */ - public static Text createTextBoxScrollable(Composite parent, - int numColumns, int minWidth, int minHeight) { - Text text = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.WRAP); - GridData data = new GridData((minWidth > 0) ? GridData.FILL - : GridData.FILL_HORIZONTAL); - data.horizontalSpan = numColumns; - if (minWidth > 0) { - data.widthHint = minWidth; - } - data.heightHint = minHeight; - - text.setLayoutData(data); - return text; - } - - /** - * Create a list with the items listed in it. - * - * @param parent - * the parent of the new text field - * @param numColumns - * number of columns the text box is to occupy - * @param minWidth - * minimum width of text field - * @param minHeight - * minimum height of text field - * @param items - * the items in the list - * @return the new list - */ - public static List createList(Composite parent, int numColumns, - int minWidth, int minHeight, String[] items) { - return createList(parent, numColumns, minWidth, minHeight, items, true); - } - - /** - * Create a list with the items listed in it. - * - * @param parent - * the parent of the new list box - * @param numColumns - * number of columns the list box is to occupy - * @param minWidth - * minimum width of list box - * @param minHeight - * minimum height of list box - * @param items - * the items in the list - * @param bmulti - * whether multiple item selection is allowed - * @return the new list - */ - public static List createList(Composite parent, int numColumns, - int minWidth, int minHeight, String[] items, boolean bmulti) { - return createList(parent, numColumns, minWidth, minHeight, items, - bmulti, 1); - } - - /** - * Create a list with the items listed in it. - * - * @param parent - * the parent of the new list box - * @param numColumns - * number of columns the list box is to occupy - * @param minWidth - * minimum width of list box - * @param minHeight - * minimum height of list box - * @param items - * the items in the list - * @param bmulti - * whether multiple item selection is allowed - * @param verticalSpan - * the number of rows the list box is to occupy - * @return the new list - */ - public static List createList(Composite parent, int numColumns, - int minWidth, int minHeight, String[] items, boolean bmulti, - int verticalSpan) { - List theList; - if (bmulti) - theList = new List(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI - | SWT.BORDER); - else - theList = new List(parent, SWT.V_SCROLL | SWT.H_SCROLL | SWT.SINGLE - | SWT.BORDER); - GridData data = new GridData(GridData.FILL_HORIZONTAL - | GridData.VERTICAL_ALIGN_BEGINNING | GridData.FILL_VERTICAL); - data.horizontalSpan = numColumns; - data.widthHint = minWidth; - data.heightHint = minHeight; - data.verticalSpan = verticalSpan; - theList.setLayoutData(data); - if (items != null) { - theList.setItems(items); - } - - return theList; - } - - /** - * Computes the size of the composite inside the scroll area so that scroll - * bars show up correctly. - * - * @param parentComposite - * @param childComposite - */ - public static void computeScrollArea(ScrolledComposite parentComposite, - Composite childComposite) { - // Point pt = childComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT); - // childComposite.setSize(pt); - - Point pt = childComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT); - parentComposite.setExpandHorizontal(true); - parentComposite.setExpandVertical(true); - parentComposite.setMinWidth(pt.x); - parentComposite.setMinHeight(pt.y); - } - - /** - * Builds an array of strings from a token list string. The token separator - * is a comma (','). - * - * @param tokenString - * @return String[] - */ - public static String[] getTokenNames(String tokenString) { - if (tokenString == null) { - return new String[0]; - } - - return tokenString.split(","); //$NON-NLS-1$ - } - - /** - * Enable/Disable the widget and all its children. - * - * @param widget - * The widget to be enabled/disabled. - * @param state - * Enable widget if true. Disable otherwise. - */ - public static void setWidgetState(Control widget, boolean state) { - if (widget instanceof Composite) { - Control widgets[] = ((Composite) widget).getChildren(); - for (int i = 0; i < widgets.length; i++) { - setWidgetState(widgets[i], state); - } - } - widget.setEnabled(state); - } - - // --------------------------------------------------------------------------- - // following is for workaround eclipse problem - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=40281 - static ControlListener _listener = new ControlListener() { - public void controlResized(ControlEvent e) { - final Composite c = (Composite) e.widget; - c.getDisplay().asyncExec(new Runnable() { - public void run() { - if (!c.isDisposed()) { - // XXX: in 3.0, should use c.layout(true) - // in 3.1, should use c.layout(true, true) - c.layout(true); - c.redraw(); - } - } - }); - } - - public void controlMoved(ControlEvent e) { - // nothing for move - } - }; - - /** - * @param composite - */ - public static void workaroundResize(Composite composite) { - composite.addControlListener(_listener); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/TextWindow.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/TextWindow.java deleted file mode 100644 index b829cd289..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/TextWindow.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.guiutils; - -import org.eclipse.jface.text.Document; -import org.eclipse.jface.text.TextViewer; -import org.eclipse.jface.window.ApplicationWindow; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Shell; - -/** - * Brings up a simple text window. - * - * @author mengbo - */ -public class TextWindow extends ApplicationWindow { - private String _content; - - private Point _size = new Point(600, 600); - - /** - * empty for passing from events. - * @param parentShell - * @param content - */ - public TextWindow(Shell parentShell, String content) { - super(parentShell); - // addStatusLine(); - _content = content; - // addCoolBar(SWT.BORDER); - // addMenuBar(); - // addToolBar(SWT.BORDER); - } - - protected Control createContents(Composite parent) { - // _text = new Text(parent, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); - // _text.setText(_content); - // return _text; - - TextViewer tview = new TextViewer(parent, SWT.BORDER | SWT.V_SCROLL - | SWT.H_SCROLL); - tview.setDocument(new Document(_content)); - - return tview.getControl(); - } - - - protected Point getInitialSize() { - return _size; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/messages.properties b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/messages.properties deleted file mode 100644 index 6291ec040..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/guiutils/messages.properties +++ /dev/null @@ -1,3 +0,0 @@ -IntroductionSection_noIntroDescription=No Introduction page configuration found in the plugin.xml -IntroductionSection_noIntroTitle=No Introduction -BrowserWindow_loading=<b>Loading...</b> diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/logging/Logger.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/logging/Logger.java deleted file mode 100644 index 3b71b83bc..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/logging/Logger.java +++ /dev/null @@ -1,215 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 2005 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.logging; - -import java.text.MessageFormat; -import java.util.ResourceBundle; - -import org.eclipse.core.runtime.ILog; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.Status; -import org.osgi.framework.Bundle; - -/** - * A resource bundle driven logger - * - */ -public class Logger { - private ResourceBundle resourceBundle; - - private ILog log; - - private String bundleId; - - /** - * @param bundle - * @param resourceBundle - */ - public Logger(Bundle bundle, ResourceBundle resourceBundle) { - log = Platform.getLog(bundle); - this.resourceBundle = resourceBundle; - bundleId = bundle.getSymbolicName(); - if (resourceBundle == null) { - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - "The resource Bundle for logger could not be null!", null); //$NON-NLS-1$ - log.log(status); - } - } - /** - * @param key - * @param arg0 - */ - public void info(String key, String arg0) { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.INFO, bundleId, IStatus.OK, - message, null); - log.log(status); - } - - /** - * @param message - */ - public void info(String message) { - IStatus status = new Status(IStatus.INFO, bundleId, IStatus.OK, - message, null); - log.log(status); - } - - /** - * @param key - * @param e - */ - public void info(String key, Throwable e) { - String message = getString(key); - IStatus status = new Status(IStatus.INFO, bundleId, IStatus.OK, - message, e); - log.log(status); - } - - /** - * @param key - * @param arg0 - * @param e - */ - public void info(String key, String arg0, Throwable e) { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.INFO, bundleId, IStatus.OK, - message, null); - log.log(status); - } - - /** - * @param key - * @param arg0 - * @param arg1 - * @param e - */ - public void info(String key, String arg0, String arg1, Throwable e) { - Object[] args = new Object[1]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.INFO, bundleId, IStatus.OK, - message, e); - log.log(status); - } - - /** - * @param key - */ - public void error(String key) { - - String message = getString(key); - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - message, null); - log.log(status); - } - - /** - * @param e - */ - public void error(Throwable e) { - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, "", e); //$NON-NLS-1$ - log.log(status); - } - - /** - * @param key - * @param e - */ - public void error(String key, Throwable e) { - String message = getString(key); - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - message, e); - log.log(status); - } - - /** - * @param key - * @param arg0 - */ - public void error(String key, String arg0) { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - message, null); - log.log(status); - } - - /** - * @param key - * @param arg - * @param e - */ - public void error(String key, String arg, Throwable e) { - Object[] args = new Object[1]; - args[0] = arg; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - message, e); - log.log(status); - } - - /** - * @param key - * @param arg0 - * @param arg1 - * @param e - */ - public void error(String key, String arg0, String arg1, Throwable e) { - Object[] args = new Object[1]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getString(key)); - String message = formatter.format(args); - IStatus status = new Status(IStatus.ERROR, bundleId, IStatus.OK, - message, e); - log.log(status); - } - - /** - * @param key - * @return the resource for the key, or an error message if - * resourceBundle.getString(key) throws an Exception - */ - private String getString(String key) - { - try - { - return resourceBundle.getString(key); - } - // suppress non-error exceptions so that the logging operation - // itself (usually called in response to an exception) does not - // throw a new exception - catch(Exception e) - { - return "!!missing resource: " + key + "!!"; //$NON-NLS-1$ //$NON-NLS-2$ - } - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.java deleted file mode 100644 index 820224538..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.preferences; - -import org.eclipse.osgi.util.NLS; - -/** - * @author cbateman - * - */ -public class OrderingMessages extends NLS -{ - private static final String BUNDLE_NAME= "org.eclipse.jst.jsf.common.ui.internal.preferences.OrderingMessages";//$NON-NLS-1$ - - private OrderingMessages() { - // Do not instantiate - } - - /** - * see OrderMessages.properties - */ - public static String Ordering_Up; - /** - * see OrderMessages.properties - */ - public static String Ordering_Down; - - static { - NLS.initializeMessages(BUNDLE_NAME, OrderingMessages.class); - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.properties b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.properties deleted file mode 100644 index 282ee2320..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/OrderingMessages.properties +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################### -# Copyright (c) 2001, 2008 Oracle 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: -# Oracle Corporation - initial API and implementation -############################################################################### -Ordering_Up=Up -Ordering_Down=Down
\ No newline at end of file diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/StrategyOrderingPanel.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/StrategyOrderingPanel.java deleted file mode 100644 index c438b960d..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/preferences/StrategyOrderingPanel.java +++ /dev/null @@ -1,322 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.preferences; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.dialogs.IDialogConstants; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.viewers.CheckStateChangedEvent; -import org.eclipse.jface.viewers.CheckboxTableViewer; -import org.eclipse.jface.viewers.ICheckStateListener; -import org.eclipse.jface.viewers.IStructuredContentProvider; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITableLabelProvider; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jst.jsf.common.internal.policy.OrderedListProvider; -import org.eclipse.jst.jsf.common.internal.policy.OrderedListProvider.OrderableObject; -import org.eclipse.jst.jsf.common.ui.internal.utils.PixelConverter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; - -/** - * Creates a composite with a checked table viewer and up/down buttons that - * allow ordering and enablement of a list of items in the table. - * - * Largely derived from - * org.eclipse.jdt.internal.ui.preferences.CodeAssistAdvancedConfigurationBlock - * - * @author cbateman - * - */ -public class StrategyOrderingPanel -{ - private CheckboxTableViewer _viewer; - private Button fUpButton; - private Button fDownButton; - - private final OrderedListProvider _provider; - private final ITableLabelProvider _labelProvider; - private final String _title; - - /** - * @param provider - * @param labelProvider - * @param title - */ - public StrategyOrderingPanel(final OrderedListProvider provider, - final ITableLabelProvider labelProvider, final String title) - { - _provider = provider; - _labelProvider = labelProvider; - _title = title; - } - - /** - * @param parent - * @return the control - */ - public Control createContents(final Composite parent) - { - final Composite panel = new Composite(parent, SWT.NONE); - final GridLayout layout = new GridLayout(2, false); - layout.marginWidth = 0; - layout.marginHeight = 0; - panel.setLayout(layout); - - final Label titleLabel = new Label(panel, SWT.NONE); - titleLabel.setText(_title); - final GridData gridData = new GridData(GridData.FILL, - GridData.BEGINNING, true, false, 2, 1); - titleLabel.setLayoutData(gridData); - - createTableViewer(panel); - createButtonList(panel); - - return panel; - } - - /** - * Refresh the UI from model. Must not be called before createContents - */ - public void refresh() - { - _provider.resetOrderedObjects(); - _viewer.refresh(); - for (final OrderableObject object : _provider.getOrderedObjects()) - { - _viewer.setChecked(object, object.isEnabled()); - } - } - - private void createTableViewer(final Composite parent) - { - _viewer = CheckboxTableViewer.newCheckList(parent, SWT.SINGLE - | SWT.BORDER); - final Table table = _viewer.getTable(); - table.setHeaderVisible(false); - table.setLinesVisible(false); - table.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, - true, false, 1, 1)); - - final TableColumn nameColumn = new TableColumn(table, SWT.NONE); - // nameColumn - // .setText(PreferencesMessages.CodeAssistAdvancedConfigurationBlock_separate_table_category_column_title); - nameColumn.setResizable(false); - - _viewer.setContentProvider(new ContentProvider()); - - _viewer.setLabelProvider(_labelProvider); - _viewer.setInput(_provider); - - final int ICON_AND_CHECKBOX_WITH = 50; - final int HEADER_MARGIN = 20; - int minNameWidth = computeWidth(table, nameColumn.getText()) - + HEADER_MARGIN; - for (int i = 0; i < _provider.getOrderedObjects().size(); i++) - { - minNameWidth = Math.max(minNameWidth, computeWidth(table, - _labelProvider.getColumnText(_provider.getOrderedObjects() - .get(i), 0)) - + ICON_AND_CHECKBOX_WITH); - } - - nameColumn.setWidth(minNameWidth); - - _viewer.addCheckStateListener(new ICheckStateListener() - { - public void checkStateChanged(final CheckStateChangedEvent event) - { - final boolean checked = event.getChecked(); - final OrderableObject element = (OrderableObject) event - .getElement(); - element.setEnabled(checked); - } - }); - - table.addSelectionListener(new SelectionAdapter() - { - @Override - public void widgetSelected(final SelectionEvent e) - { - handleTableSelection(); - } - }); - - } - - private void createButtonList(final Composite parent) - { - final Composite composite = new Composite(parent, SWT.NONE); - composite.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, - false, false)); - - final GridLayout layout = new GridLayout(); - layout.marginWidth = 0; - layout.marginHeight = 0; - composite.setLayout(layout); - - fUpButton = new Button(composite, SWT.PUSH | SWT.CENTER); - fUpButton.setText(OrderingMessages.Ordering_Up); - fUpButton.addSelectionListener(new SelectionAdapter() - { - @Override - public void widgetSelected(final SelectionEvent e) - { - final int index = getSelectionIndex(); - if (index != -1) - { - final OrderableObject object = _provider - .getOrderedObjects().get(index); - _provider.moveUp(object); - _viewer.refresh(); - handleTableSelection(); - } - } - }); - fUpButton.setLayoutData(new GridData()); - setButtonDimensionHint(fUpButton); - - fDownButton = new Button(composite, SWT.PUSH | SWT.CENTER); - fDownButton.setText(OrderingMessages.Ordering_Down); - fDownButton.addSelectionListener(new SelectionAdapter() - { - @Override - public void widgetSelected(final SelectionEvent e) - { - final int index = getSelectionIndex(); - if (index != -1) - { - final OrderableObject object = _provider - .getOrderedObjects().get(index); - _provider.moveDown(object); - _viewer.refresh(); - handleTableSelection(); - } - } - }); - fDownButton.setLayoutData(new GridData()); - setButtonDimensionHint(fDownButton); - } - - private int computeWidth(final Control control, final String name) - { - if (name == null) - { - return 0; - } - final GC gc = new GC(control); - try - { - gc.setFont(JFaceResources.getDialogFont()); - return gc.stringExtent(name).x + 10; - } - finally - { - gc.dispose(); - } - } - - private void handleTableSelection() - { - final OrderableObject item = getSelectedItem(); - if (item != null) - { - final int index = getSelectionIndex(); - fUpButton.setEnabled(index > 0); - fDownButton - .setEnabled(index < _provider.getOrderedObjects().size() - 1); - } - else - { - fUpButton.setEnabled(false); - fDownButton.setEnabled(false); - } - } - - private OrderableObject getSelectedItem() - { - return (OrderableObject) ((IStructuredSelection) _viewer.getSelection()) - .getFirstElement(); - } - - private int getSelectionIndex() - { - return _viewer.getTable().getSelectionIndex(); - } - - /** - * Returns a width hint for a button control. - */ - private static int getButtonWidthHint(final Button button) - { - button.setFont(JFaceResources.getDialogFont()); - PixelConverter converter = new PixelConverter(button); - final int widthHint = converter - .convertHorizontalDLUsToPixels(IDialogConstants.BUTTON_WIDTH); - return Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, - true).x); - } - - /** - * Sets width and height hint for the button control. <b>Note:</b> This is - * a NOP if the button's layout data is not an instance of - * <code>GridData</code>. - * - * @param button - * the button for which to set the dimension hint - */ - private static void setButtonDimensionHint(final Button button) - { - Assert.isNotNull(button); - final Object gd = button.getLayoutData(); - if (gd instanceof GridData) - { - ((GridData) gd).widthHint = getButtonWidthHint(button); - ((GridData) gd).horizontalAlignment = GridData.FILL; - } - } - - private static class ContentProvider implements IStructuredContentProvider - { - - public Object[] getElements(final Object inputElement) - { - if (inputElement instanceof OrderedListProvider) - { - return ((OrderedListProvider) inputElement).getOrderedObjects() - .toArray(); - } - return new Object[0]; - } - - public void dispose() - { - // do nothing - } - - public void inputChanged(final Viewer viewer, final Object oldInput, - final Object newInput) - { - // do nothing - } - - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/FavoriteConfigurations.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/FavoriteConfigurations.java deleted file mode 100644 index aa7744b1c..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/FavoriteConfigurations.java +++ /dev/null @@ -1,257 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Properties; - -import org.eclipse.core.runtime.IPath; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.XMLMemento; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -/** - * This provides a means to store common properties for pages. - * - * Holds a <code>List</code> of <code>Properties</code> which can be - * manipulated by the user. - * - * @author mengbo - */ -public class FavoriteConfigurations { - private static Logger _log = JSFUICommonPlugin - .getLogger(FavoriteConfigurations.class); - - private final static String FAV_EXTENSIONS = ".xml"; //$NON-NLS-1$ - - private final static String ELEMENT_ROOT = "favorite"; //$NON-NLS-1$ - - private final static String ELEMENT_CONFIG = "config"; //$NON-NLS-1$ - - private final static String ELEMENT_NAME = "name"; //$NON-NLS-1$ - - private final static String ELEMENT_PROPERTY = "property"; //$NON-NLS-1$ - - private final static String ELEMENT_VALUE = "value"; //$NON-NLS-1$ - - private Map _favorites; - - private IPath _favoriteFile; - - private String _favoriteName; - - /** - * Constructor - * - * @param plugin - * used for location of favorite file. - * @param favoriteName - * used for name of file and for mapping the properties of this - * favorite. - */ - public FavoriteConfigurations(AbstractUIPlugin plugin, String favoriteName) { - super(); - _favoriteFile = plugin.getStateLocation().append( - scanFileName(favoriteName) + FAV_EXTENSIONS); - readFavorites(); - } - - /** - * Returns the favorite entry that is mapped under the given name. - * - * @param name - * the favorite - * @return <code>Properties</code> config entry for the favorite. - */ - public Properties getFavorite(String name) { - return (Properties) _favorites.get(name); - } - - /** - * Stores the Favorites into the plugin directory. - */ - public void saveFavorites() { - FileWriter fw = null; - try { - XMLMemento memento = XMLMemento.createWriteRoot(ELEMENT_ROOT); - for (Iterator it = _favorites.keySet().iterator(); it.hasNext();) { - String favName = (String) it.next(); - Map props = new HashMap((Properties) _favorites.get(favName)); - - IMemento config = memento.createChild(ELEMENT_CONFIG); - config.putString(ELEMENT_NAME, favName); - - for (Iterator it1 = props.keySet().iterator(); it1.hasNext();) { - IMemento entry = config.createChild(ELEMENT_PROPERTY); - String name = (String) it1.next(); - entry.putString(ELEMENT_NAME, name); - entry.putString(ELEMENT_VALUE, (String) props.get(name)); - } - } - fw = new FileWriter(_favoriteFile.toFile()); - memento.save(fw); - } catch (Exception ee) { - // log.FavoriteConfigurations.save.error=Failed to save {0} - // favorites. File={1} - _log.info("log.FavoriteConfigurations.save.error", _favoriteName, //$NON-NLS-1$ - _favoriteFile.toOSString(), ee); - } finally { - if (fw != null) { - try { - fw.close(); - } catch (IOException ee)// NOPMD - { - // nothing to do when IOException throwed in closing files. - } - } - } - } - - /** - * Add the favorite into the internal structure but don't save until - * saveFavorites() is called. - * - * @param name - * @param config - */ - public void addFavorite(String name, Properties config) { - _favorites.put(name, config); - } - - /** - * Removes the Favorite that is mapped under the given name. - * - * @param name - * the name of the configuration - */ - public void removeFavorite(String name) { - _favorites.remove(name); - } - - /** - * Read the favorites from the disk into the memory structure. - */ - protected void readFavorites() { - _favorites = new HashMap(); - FileReader fr = null; - try { - try { - fr = new FileReader(_favoriteFile.toFile()); - } catch (FileNotFoundException ee)// NOPMD - { - // no error here since they don't have to have a favorites... - } - if (fr != null) { - XMLMemento memento = XMLMemento.createReadRoot(fr); - IMemento[] children = memento.getChildren(ELEMENT_CONFIG); - for (int ii = 0; ii < children.length; ii++) { - Properties props = new Properties(); - IMemento config = children[ii]; - String name = config.getString(ELEMENT_NAME); - - IMemento[] configProperties = config - .getChildren(ELEMENT_PROPERTY); - for (int jj = 0; jj < configProperties.length; jj++) { - IMemento entry = configProperties[jj]; - setProperty(props, entry.getString(ELEMENT_NAME), entry - .getString(ELEMENT_VALUE)); - } - _favorites.put(name, props); - } - } - } catch (Exception ee) { - // log.FavoriteConfigurations.read.error=Failed to save {0} - // favorites. File={1} - _log.error("log.FavoriteConfigurations.read.error", _favoriteName, //$NON-NLS-1$ - _favoriteFile.toOSString(), ee); - } finally { - if (fr != null) { - try { - fr.close(); - } catch (IOException ee)// NOPMD - { - // nothing to do when IOException throwed in closing files. - } - } - } - } - - /** - * Set the value in the properties object. - * - * @param props - * @param name - * @param value - */ - private void setProperty(Properties props, String name, String value) { - if (name != null && value != null) { - props.setProperty(name, value); - } - } - - /** - * Get a list of all the favorites stored in this file. - * - * @return list of favorites - */ - public String[] getFavoritesList() { - Object[] objs = _favorites.keySet().toArray(); - String[] names = new String[objs.length]; - - for (int ii = 0; ii < objs.length; ii++) { - names[ii] = (String) objs[ii]; - } - Arrays.sort(names); - - return names; - } - - /** - * scan the file name for any bad character that would fail when trying to - * create the file. We replace bad characters with '_' - */ - private static String scanFileName(String filename) { - StringBuffer strBuf = new StringBuffer(); - char[] chars = filename.toCharArray(); - - for (int ii = 0; ii < chars.length; ii++) { - switch (chars[ii]) { - case '&': - case '\\': - case '/': - case ' ': - case '\t': - case ':': - case '.': - case '\"': - case '\'': - case '@': - strBuf.append('_'); - break; - default: - strBuf.append(chars[ii]); - break; - } - } - - return strBuf.toString(); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JSFSharedImages.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JSFSharedImages.java deleted file mode 100644 index 2b67a671e..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JSFSharedImages.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 2008 Oracle 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: - * Oracle Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -/** - * Constants that can be passed to JSFUICommonPlugin.getImageDescriptor and - * getImage to obtain common images. - * - * @author cbateman - * - */ -public interface JSFSharedImages -{ - /** - * The icon use for default/unknown tags. Consists of blue open/close - * angled braces on a neutral background. - * - * Size: 16x16 - */ - public final static String DEFAULT_PALETTE_TAG_IMG = "PD_Palette_Default.gif"; //$NON-NLS-1$ - - /** - * A yellow cube on a white background. Suitable for representing - * generic objects and components. - * - * Size: 16x16 - */ - public final static String GENERIC_OBJECT_IMG = "object.gif"; //$NON-NLS-1$ - - /** - * A generic image suitable for representing JSF validators. Consists of - * a white box with a blue check mark. - * - * Size: 16x16 - */ - public final static String GENERIC_VALIDATOR_IMG = "jsf_validator.gif"; //$NON-NLS-1$ - - /** - * A generic image suitable for representing JSF converter. Consists of - * yellow blob being "converted". - * - * Size: 16x16 - */ - public final static String GENERIC_CONVERTER_IMG = "jsf_converter.gif"; //$NON-NLS-1$ - - /** - * A generic image suitable for representing a view root. Same as the - * default image generally associated with f:view. - * - * Size: 16x16. - */ - public static final String GENERIC_VIEWROOT_IMG = "jsf_view.gif"; //$NON-NLS-1$ - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JavaModelUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JavaModelUtil.java deleted file mode 100644 index c4086ed7f..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/JavaModelUtil.java +++ /dev/null @@ -1,1032 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.ClasspathContainerInitializer; -import org.eclipse.jdt.core.Flags; -import org.eclipse.jdt.core.IClasspathContainer; -import org.eclipse.jdt.core.IClasspathEntry; -import org.eclipse.jdt.core.ICompilationUnit; -import org.eclipse.jdt.core.IField; -import org.eclipse.jdt.core.IImportDeclaration; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jdt.core.IMember; -import org.eclipse.jdt.core.IMethod; -import org.eclipse.jdt.core.IPackageFragment; -import org.eclipse.jdt.core.IPackageFragmentRoot; -import org.eclipse.jdt.core.IType; -import org.eclipse.jdt.core.ITypeHierarchy; -import org.eclipse.jdt.core.JavaCore; -import org.eclipse.jdt.core.JavaModelException; -import org.eclipse.jdt.core.Signature; -import org.eclipse.jdt.core.compiler.CharOperation; - -/** - * Original code is from JDT Utility methods for the Java Model. - */ -public final class JavaModelUtil { - - /** - * Finds a type by its qualified type name (dot separated). - * - * @param jproject - * The java project to search in - * @param fullyQualifiedName - * The fully qualified name (type name with enclosing type names - * and package (all separated by dots)) - * @return The type found, or null if not existing - * @throws JavaModelException - */ - public static IType findType(IJavaProject jproject, - String fullyQualifiedName) throws JavaModelException { - // workaround for bug 22883 - IType type = jproject.findType(fullyQualifiedName); - if (type != null) { - return type; - } - IPackageFragmentRoot[] roots = jproject.getPackageFragmentRoots(); - for (int i = 0; i < roots.length; i++) { - IPackageFragmentRoot root = roots[i]; - type = findType(root, fullyQualifiedName); - if (type != null && type.exists()) { - return type; - } - } - return null; - } - - /** - * Returns <code>true</code> if the given package fragment root is - * referenced. This means it is own by a different project but is referenced - * by the root's parent. Returns <code>false</code> if the given root - * doesn't have an underlying resource. - * @param root - * @return true if root is referenced - */ - public static boolean isReferenced(IPackageFragmentRoot root) { - IResource resource = root.getResource(); - if (resource != null) { - IProject jarProject = resource.getProject(); - IProject container = root.getJavaProject().getProject(); - return !container.equals(jarProject); - } - return false; - } - - private static IType findType(IPackageFragmentRoot root, - String fullyQualifiedName) throws JavaModelException { - IJavaElement[] children = root.getChildren(); - for (int i = 0; i < children.length; i++) { - IJavaElement element = children[i]; - if (element.getElementType() == IJavaElement.PACKAGE_FRAGMENT) { - IPackageFragment pack = (IPackageFragment) element; - if (!fullyQualifiedName.startsWith(pack.getElementName())) { - continue; - } - IType type = findType(pack, fullyQualifiedName); - if (type != null && type.exists()) { - return type; - } - } - } - return null; - } - - private static IType findType(IPackageFragment pack, - String fullyQualifiedName) throws JavaModelException { - ICompilationUnit[] cus = pack.getCompilationUnits(); - for (int i = 0; i < cus.length; i++) { - ICompilationUnit unit = cus[i]; - IType type = findType(unit, fullyQualifiedName); - if (type != null && type.exists()) { - return type; - } - } - return null; - } - - private static IType findType(ICompilationUnit cu, String fullyQualifiedName) - throws JavaModelException { - IType[] types = cu.getAllTypes(); - for (int i = 0; i < types.length; i++) { - IType type = types[i]; - if (getFullyQualifiedName(type).equals(fullyQualifiedName)) { - return type; - } - } - return null; - } - - /** - * Finds a type by package and type name. - * - * @param jproject - * the java project to search in - * @param pack - * The package name - * @param typeQualifiedName - * the type qualified name (type name with enclosing type names - * (separated by dots)) - * @return the type found, or null if not existing - * @throws JavaModelException - * @deprecated Use IJavaProject.findType(String, String) instead - */ - public static IType findType(IJavaProject jproject, String pack, - String typeQualifiedName) throws JavaModelException { - return jproject.findType(pack, typeQualifiedName); - } - - /** - * Finds a type container by container name. The returned element will be of - * type <code>IType</code> or a <code>IPackageFragment</code>. - * <code>null</code> is returned if the type container could not be found. - * - * @param jproject - * The Java project defining the context to search - * @param typeContainerName - * A dot separarted name of the type container - * @return the java element - * @throws JavaModelException - * @see #getTypeContainerName(IType) - */ - public static IJavaElement findTypeContainer(IJavaProject jproject, - String typeContainerName) throws JavaModelException { - // try to find it as type - IJavaElement result = jproject.findType(typeContainerName); - if (result == null) { - // find it as package - IPath path = new Path(typeContainerName.replace('.', '/')); - result = jproject.findElement(path); - if (!(result instanceof IPackageFragment)) { - result = null; - } - - } - return result; - } - - /** - * Finds a type in a compilation unit. Typical usage is to find the - * corresponding type in a working copy. - * - * @param cu - * the compilation unit to search in - * @param typeQualifiedName - * the type qualified name (type name with enclosing type names - * (separated by dots)) - * @return the type found, or null if not existing - * @throws JavaModelException - */ - public static IType findTypeInCompilationUnit(ICompilationUnit cu, - String typeQualifiedName) throws JavaModelException { - IType[] types = cu.getAllTypes(); - for (int i = 0; i < types.length; i++) { - String currName = getTypeQualifiedName(types[i]); - if (typeQualifiedName.equals(currName)) { - return types[i]; - } - } - return null; - } - - /** - * Finds a a member in a compilation unit. Typical usage is to find the - * corresponding member in a working copy. - * - * @param cu - * the compilation unit (eg. working copy) to search in - * @param member - * the member (eg. from the original) - * @return the member found, or null if not existing - */ - public static IMember findMemberInCompilationUnit(ICompilationUnit cu, - IMember member) { - IJavaElement[] elements = cu.findElements(member); - if (elements != null && elements.length > 0) { - return (IMember) elements[0]; - } - return null; - } - - /** - * Returns the element of the given compilation unit which is "equal" to the - * given element. Note that the given element usually has a parent different - * from the given compilation unit. - * - * @param cu - * the cu to search in - * @param element - * the element to look for - * @return an element of the given cu "equal" to the given element - */ - public static IJavaElement findInCompilationUnit(ICompilationUnit cu, - IJavaElement element) { - IJavaElement[] elements = cu.findElements(element); - if (elements != null && elements.length > 0) { - return elements[0]; - } - return null; - } - - /** - * Returns the qualified type name of the given type using '.' as - * separators. This is a replace for IType.getTypeQualifiedName() which uses - * '$' as separators. As '$' is also a valid character in an id this is - * ambiguous. JavaCore PR: 1GCFUNT - * @param type - * @return the type qualified name - */ - public static String getTypeQualifiedName(IType type) { - return type.getTypeQualifiedName('.'); - } - - /** - * Returns the fully qualified name of the given type using '.' as - * separators. This is a replace for IType.getFullyQualifiedTypeName which - * uses '$' as separators. As '$' is also a valid character in an id this is - * ambiguous. JavaCore PR: 1GCFUNT - * @param type - * @return the fully qualified name using . as the separator - */ - public static String getFullyQualifiedName(IType type) { - return type.getFullyQualifiedName('.'); - } - - /** - * Returns the fully qualified name of a type's container. (package name or - * enclosing type name) - * @param type - * @return the container name - */ - public static String getTypeContainerName(IType type) { - IType outerType = type.getDeclaringType(); - if (outerType != null) { - return outerType.getFullyQualifiedName('.'); - } - return type.getPackageFragment().getElementName(); - } - - /** - * Concatenates two names. Uses a dot for separation. Both strings can be - * empty or <code>null</code>. - * @param name1 - * @param name2 - * @return name1 + name2 - */ - public static String concatenateName(String name1, String name2) { - StringBuffer buf = new StringBuffer(); - if (name1 != null && name1.length() > 0) { - buf.append(name1); - } - if (name2 != null && name2.length() > 0) { - if (buf.length() > 0) { - buf.append('.'); - } - buf.append(name2); - } - return buf.toString(); - } - - /** - * Concatenates two names. Uses a dot for separation. Both strings can be - * empty or <code>null</code>. - * @param name1 - * @param name2 - * @return name1 + name2 - */ - public static String concatenateName(char[] name1, char[] name2) { - StringBuffer buf = new StringBuffer(); - if (name1 != null && name1.length > 0) { - buf.append(name1); - } - if (name2 != null && name2.length > 0) { - if (buf.length() > 0) { - buf.append('.'); - } - buf.append(name2); - } - return buf.toString(); - } - - /** - * Evaluates if a member (possible from another package) is visible from - * elements in a package. - * - * @param member - * The member to test the visibility for - * @param pack - * The package in focus - * @return true if visible - * @throws JavaModelException - */ - public static boolean isVisible(IMember member, IPackageFragment pack) - throws JavaModelException { - - int type = member.getElementType(); - if (type == IJavaElement.INITIALIZER - || (type == IJavaElement.METHOD && member.getElementName() - .startsWith("<"))) { //$NON-NLS-1$ - //$NON-NLS-1$ - return false; - } - - int otherflags = member.getFlags(); - IType declaringType = member.getDeclaringType(); - if (Flags.isPublic(otherflags) - || (declaringType != null && declaringType.isInterface())) { - return true; - } else if (Flags.isPrivate(otherflags)) { - return false; - } - - IPackageFragment otherpack = (IPackageFragment) findParentOfKind( - member, IJavaElement.PACKAGE_FRAGMENT); - return (pack != null && otherpack != null && isSamePackage(pack, - otherpack)); - } - - /** - * Evaluates if a member in the focus' element hierarchy is visible from - * elements in a package. - * - * @param member - * The member to test the visibility for - * @param pack - * The package of the focus element focus - * @return true if is visible in hiearchy - * @throws JavaModelException - */ - public static boolean isVisibleInHierarchy(IMember member, - IPackageFragment pack) throws JavaModelException { - int type = member.getElementType(); - if (type == IJavaElement.INITIALIZER - || (type == IJavaElement.METHOD && member.getElementName() - .startsWith("<"))) { //$NON-NLS-1$ - //$NON-NLS-1$ - return false; - } - - int otherflags = member.getFlags(); - - IType declaringType = member.getDeclaringType(); - if (Flags.isPublic(otherflags) || Flags.isProtected(otherflags) - || (declaringType != null && declaringType.isInterface())) { - return true; - } else if (Flags.isPrivate(otherflags)) { - return false; - } - - IPackageFragment otherpack = (IPackageFragment) findParentOfKind( - member, IJavaElement.PACKAGE_FRAGMENT); - return (pack != null && pack.equals(otherpack)); - } - - /** - * Returns the package fragment root of <code>IJavaElement</code>. If the - * given element is already a package fragment root, the element itself is - * returned. - * @param element - * @return the package fragment root - */ - public static IPackageFragmentRoot getPackageFragmentRoot( - IJavaElement element) { - return (IPackageFragmentRoot) element - .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); - } - - /** - * Returns the parent of the supplied java element that conforms to the - * given parent type or <code>null</code>, if such a parent doesn't exit. - * - * @deprecated Use element.getParent().getAncestor(kind); - */ - private static IJavaElement findParentOfKind(IJavaElement element, int kind) { - if (element != null && element.getParent() != null) { - return element.getParent().getAncestor(kind); - } - return null; - } - - /** - * Finds a method in a type. This searches for a method with the same name - * and signature. Parameter types are only compared by the simple name, no - * resolving for the fully qualified type name is done. Constructors are - * only compared by parameters, not the name. - * - * @param name - * The name of the method to find - * @param paramTypes - * The type signatures of the parameters e.g. - * <code>{"QString;","I"}</code> - * @param isConstructor - * If the method is a constructor - * @param type - * @return The first found method or <code>null</code>, if nothing found - * @throws JavaModelException - */ - public static IMethod findMethod(String name, String[] paramTypes, - boolean isConstructor, IType type) throws JavaModelException { - return findMethod(name, paramTypes, isConstructor, type.getMethods()); - } - - /** - * Finds a method by name. This searches for a method with a name and - * signature. Parameter types are only compared by the simple name, no - * resolving for the fully qualified type name is done. Constructors are - * only compared by parameters, not the name. - * - * @param name - * The name of the method to find - * @param paramTypes - * The type signatures of the parameters e.g. - * <code>{"QString;","I"}</code> - * @param isConstructor - * If the method is a constructor - * @param methods - * The methods to search in - * @return The found method or <code>null</code>, if nothing found - * @throws JavaModelException - */ - public static IMethod findMethod(String name, String[] paramTypes, - boolean isConstructor, IMethod[] methods) throws JavaModelException { - for (int i = methods.length - 1; i >= 0; i--) { - if (isSameMethodSignature(name, paramTypes, isConstructor, - methods[i])) { - return methods[i]; - } - } - return null; - } - - /** - * Finds a method declararion in a type's hierarchy. The search is top down, - * so this returns the first declaration of the method in the hierarchy. - * This searches for a method with a name and signature. Parameter types are - * only compared by the simple name, no resolving for the fully qualified - * type name is done. Constructors are only compared by parameters, not the - * name. - * @param hierarchy - * - * @param type - * Searches in this type's supertypes. - * @param name - * The name of the method to find - * @param paramTypes - * The type signatures of the parameters e.g. - * <code>{"QString;","I"}</code> - * @param isConstructor - * If the method is a constructor - * @return The first method found or null, if nothing found - * @throws JavaModelException - */ - public static IMethod findMethodDeclarationInHierarchy( - ITypeHierarchy hierarchy, IType type, String name, - String[] paramTypes, boolean isConstructor) - throws JavaModelException { - IType[] superTypes = hierarchy.getAllSupertypes(type); - for (int i = superTypes.length - 1; i >= 0; i--) { - IMethod first = findMethod(name, paramTypes, isConstructor, - superTypes[i]); - if (first != null && !Flags.isPrivate(first.getFlags())) { - // the order getAllSupertypes does make assumptions of the order - // of inner elements -> search recursivly - IMethod res = findMethodDeclarationInHierarchy(hierarchy, first - .getDeclaringType(), name, paramTypes, isConstructor); - if (res != null) { - return res; - } - return first; - } - } - return null; - } - - /** - * Finds a method implementation in a type's classhierarchy. The search is - * bottom-up, so this returns the nearest overridden method. Does not find - * methods in interfaces or abstract methods. This searches for a method - * with a name and signature. Parameter types are only compared by the - * simple name, no resolving for the fully qualified type name is done. - * Constructors are only compared by parameters, not the name. - * @param hierarchy - * - * @param type - * Type to search the superclasses - * @param name - * The name of the method to find - * @param paramTypes - * The type signatures of the parameters e.g. - * <code>{"QString;","I"}</code> - * @param isConstructor - * If the method is a constructor - * @return The first method found or null, if nothing found - * @throws JavaModelException - */ - public static IMethod findMethodImplementationInHierarchy( - ITypeHierarchy hierarchy, IType type, String name, - String[] paramTypes, boolean isConstructor) - throws JavaModelException { - IType[] superTypes = hierarchy.getAllSuperclasses(type); - for (int i = 0; i < superTypes.length; i++) { - IMethod found = findMethod(name, paramTypes, isConstructor, - superTypes[i]); - if (found != null) { - if (Flags.isAbstract(found.getFlags())) { - return null; - } - return found; - } - } - return null; - } - - private static IMethod findMethodInHierarchy(ITypeHierarchy hierarchy, - IType type, String name, String[] paramTypes, boolean isConstructor) - throws JavaModelException { - IMethod method = findMethod(name, paramTypes, isConstructor, type); - if (method != null) { - return method; - } - IType superClass = hierarchy.getSuperclass(type); - if (superClass != null) { - IMethod res = findMethodInHierarchy(hierarchy, superClass, name, - paramTypes, isConstructor); - if (res != null) { - return res; - } - } - if (!isConstructor) { - IType[] superInterfaces = hierarchy.getSuperInterfaces(type); - for (int i = 0; i < superInterfaces.length; i++) { - IMethod res = findMethodInHierarchy(hierarchy, - superInterfaces[i], name, paramTypes, false); - if (res != null) { - return res; - } - } - } - return method; - } - - /** - * Finds the method that is defines/declares the given method. The search is - * bottom-up, so this returns the nearest defining/declaring method. - * @param typeHierarchy - * @param type - * @param methodName - * @param paramTypes - * @param isConstructor - * - * @param testVisibility - * If true the result is tested on visibility. Null is returned - * if the method is not visible. - * @return the method or null - * @throws JavaModelException - */ - public static IMethod findMethodDefininition(ITypeHierarchy typeHierarchy, - IType type, String methodName, String[] paramTypes, - boolean isConstructor, boolean testVisibility) - throws JavaModelException { - IType superClass = typeHierarchy.getSuperclass(type); - if (superClass != null) { - IMethod res = findMethodInHierarchy(typeHierarchy, superClass, - methodName, paramTypes, isConstructor); - if (res != null && !Flags.isPrivate(res.getFlags())) { - if (!testVisibility - || isVisibleInHierarchy(res, type.getPackageFragment())) { - return res; - } - } - } - if (!isConstructor) { - IType[] interfaces = typeHierarchy.getSuperInterfaces(type); - for (int i = 0; i < interfaces.length; i++) { - IMethod res = findMethodInHierarchy(typeHierarchy, - interfaces[i], methodName, paramTypes, false); - if (res != null) { - return res; // methods from interfaces are always public and - // therefore visible - } - } - } - return null; - } - - /** - * Tests if a method equals to the given signature. Parameter types are only - * compared by the simple name, no resolving for the fully qualified type - * name is done. Constructors are only compared by parameters, not the name. - * - * @param name - * Name of the method - * @param paramTypes - * The type signatures of the parameters e.g. - * <code>{"QString;","I"}</code> - * @param isConstructor - * Specifies if the method is a constructor - * @param curr - * @return Returns <code>true</code> if the method has the given name and - * parameter types and constructor state. - * @throws JavaModelException - */ - public static boolean isSameMethodSignature(String name, - String[] paramTypes, boolean isConstructor, IMethod curr) - throws JavaModelException { - if (isConstructor || name.equals(curr.getElementName())) { - if (isConstructor == curr.isConstructor()) { - String[] currParamTypes = curr.getParameterTypes(); - if (paramTypes.length == currParamTypes.length) { - for (int i = 0; i < paramTypes.length; i++) { - String t1 = Signature.getSimpleName(Signature - .toString(paramTypes[i])); - String t2 = Signature.getSimpleName(Signature - .toString(currParamTypes[i])); - if (!t1.equals(t2)) { - return false; - } - } - return true; - } - } - } - return false; - } - - /** - * Tests if two <code>IPackageFragment</code>s represent the same logical - * java package. - * @param pack1 - * @param pack2 - * - * @return <code>true</code> if the package fragments' names are equal. - */ - public static boolean isSamePackage(IPackageFragment pack1, - IPackageFragment pack2) { - return pack1.getElementName().equals(pack2.getElementName()); - } - - /** - * Checks whether the given type has a valid main method or not. - * @param type - * @return true if type has a main method - * @throws JavaModelException - */ - public static boolean hasMainMethod(IType type) throws JavaModelException { - IMethod[] methods = type.getMethods(); - for (int i = 0; i < methods.length; i++) { - if (methods[i].isMainMethod()) { - return true; - } - } - return false; - } - - /** - * Checks if the field is boolean. - * @param field - * @return true if the file is of primitive boolean type - * @throws JavaModelException - */ - public static boolean isBoolean(IField field) throws JavaModelException { - return field.getTypeSignature().equals(Signature.SIG_BOOLEAN); - } - - /** - * Tests if the given element is on the class path of its containing - * project. Handles the case that the containing project isn't a Java - * project. - * @param element - * @return true if element in on the class path? - */ - public static boolean isOnClasspath(IJavaElement element) { - IJavaProject project = element.getJavaProject(); - if (!project.exists()) - return false; - return project.isOnClasspath(element); - } - - /** - * Resolves a type name in the context of the declaring type. - * - * @param refTypeSig - * the type name in signature notation (for example 'QVector') - * this can also be an array type, but dimensions will be - * ignored. - * @param declaringType - * the context for resolving (type where the reference was made - * in) - * @return returns the fully qualified type name or build-in-type name. if a - * unresoved type couldn't be resolved null is returned - * @throws JavaModelException - */ - public static String getResolvedTypeName(String refTypeSig, - IType declaringType) throws JavaModelException { - int arrayCount = Signature.getArrayCount(refTypeSig); - char type = refTypeSig.charAt(arrayCount); - if (type == Signature.C_UNRESOLVED) { - int semi = refTypeSig - .indexOf(Signature.C_SEMICOLON, arrayCount + 1); - if (semi == -1) { - throw new IllegalArgumentException(); - } - String name = refTypeSig.substring(arrayCount + 1, semi); - - String[][] resolvedNames = declaringType.resolveType(name); - if (resolvedNames != null && resolvedNames.length > 0) { - return JavaModelUtil.concatenateName(resolvedNames[0][0], - resolvedNames[0][1]); - } - return null; - } - return Signature.toString(refTypeSig.substring(arrayCount)); - } - - /** - * Returns if a CU can be edited. - * @param cu - * @return true if cu is editable - */ - public static boolean isEditable(ICompilationUnit cu) { - IResource resource = toOriginal(cu).getResource(); - return (resource.exists() && !resource.getResourceAttributes() - .isReadOnly()); - } - - /** - * Finds a qualified import for a type name. - * @param cu - * @param simpleName - * @return the import declaration or null - * @throws JavaModelException - */ - public static IImportDeclaration findImport(ICompilationUnit cu, - String simpleName) throws JavaModelException { - IImportDeclaration[] existing = cu.getImports(); - for (int i = 0; i < existing.length; i++) { - String curr = existing[i].getElementName(); - if (curr.endsWith(simpleName)) { - int dotPos = curr.length() - simpleName.length() - 1; - if ((dotPos == -1) - || (dotPos > 0 && curr.charAt(dotPos) == '.')) { - return existing[i]; - } - } - } - return null; - } - - /** - * Returns the original if the given member. If the member is already an - * original the input is returned. The returned member might not exist - * @param member - * @return the original IMember - */ - public static IMember toOriginal(IMember member) { - if (member instanceof IMethod) { - return toOriginalMethod((IMethod) member); - } - - return (IMember) member.getPrimaryElement(); - /* - * ICompilationUnit cu= member.getCompilationUnit(); if (cu != null && - * cu.isWorkingCopy()) return (IMember)cu.getOriginal(member); return - * member; - */ - } - - /* - * XXX workaround for bug 18568 - * http://bugs.eclipse.org/bugs/show_bug.cgi?id=18568 to be removed once the - * bug is fixed - */ - private static IMethod toOriginalMethod(IMethod method) { - ICompilationUnit cu = method.getCompilationUnit(); - if (cu == null || isPrimary(cu)) { - return method; - } - try { - // use the workaround only if needed - if (!method.getElementName().equals( - method.getDeclaringType().getElementName())) - return (IMethod) method.getPrimaryElement(); - - IType originalType = (IType) toOriginal(method.getDeclaringType()); - IMethod[] methods = originalType.findMethods(method); - boolean isConstructor = method.isConstructor(); - for (int i = 0; i < methods.length; i++) { - if (methods[i].isConstructor() == isConstructor) - return methods[i]; - } - return null; - } catch (JavaModelException e) { - return null; - } - } - - // private static boolean PRIMARY_ONLY = false; - - /** - * Returns the original cu if the given cu is a working copy. If the cu is - * already an original the input cu is returned. The returned cu might not - * exist - * @param cu - * @return the original compiliation unit - */ - public static ICompilationUnit toOriginal(ICompilationUnit cu) { - // To stay compatible with old version returned null - // if cu is null - if (cu == null) - return cu; - return cu.getPrimary(); - } - - /** - * Returns the original element if the given element is a working copy. If - * the cu is already an original the input element is returned. The returned - * element might not exist - * @param element - * @return element's primary element - */ - public static IJavaElement toOriginal(IJavaElement element) { - return element.getPrimaryElement(); - } - - /** - * Returns true if a cu is a primary cu (original or shared working copy) - * @param cu - * @return true if cu is primary - */ - public static boolean isPrimary(ICompilationUnit cu) { - return cu.getOwner() == null; - } - - /** - * http://bugs.eclipse.org/bugs/show_bug.cgi?id=19253 - * - * Reconciling happens in a separate thread. This can cause a situation - * where the Java element gets disposed after an exists test has been done. - * So we should not log not present exceptions when they happen in working - * copies. - * @param exception - * @return true if filter not present - */ - public static boolean filterNotPresentException(CoreException exception) { - if (!(exception instanceof JavaModelException)) { - return true; - } - JavaModelException je = (JavaModelException) exception; - if (!je.isDoesNotExist()) { - return true; - } - IJavaElement[] elements = je.getJavaModelStatus().getElements(); - for (int i = 0; i < elements.length; i++) { - IJavaElement element = elements[i]; - ICompilationUnit unit = (ICompilationUnit) element - .getAncestor(IJavaElement.COMPILATION_UNIT); - if (unit == null) { - return true; - } - if (!unit.isWorkingCopy()) { - return true; - } - } - return false; - } - - /** - * @param type - * @param pm - * @return all supertypes of type - * @throws JavaModelException - */ - public static IType[] getAllSuperTypes(IType type, IProgressMonitor pm) - throws JavaModelException { - // workaround for 23656 - Set types = new HashSet(Arrays.asList(type.newSupertypeHierarchy(pm) - .getAllSupertypes(type))); - IType objekt = type.getJavaProject().findType("java.lang.Object");//$NON-NLS-1$ - if (objekt != null) { - types.add(objekt); - } - return (IType[]) types.toArray(new IType[types.size()]); - } - - /** - * @param resourcePath - * @param exclusionPatterns - * @return true if resourcePath is excluded by exclusion patterns - */ - public static boolean isExcludedPath(IPath resourcePath, - IPath[] exclusionPatterns) { - char[] path = resourcePath.toString().toCharArray(); - for (int i = 0, length = exclusionPatterns.length; i < length; i++) { - char[] pattern = exclusionPatterns[i].toString().toCharArray(); - if (CharOperation.pathMatch(pattern, path, true, '/')) { - return true; - } - } - return false; - } - - /* - - * @see IClasspathEntry#getExclusionPatterns - */ - /** - * Returns whether the given resource path matches one of the exclusion - * patterns. - * - * @param resourcePath - * @param exclusionPatterns - * @return true if resourcePath is excluded - */ - public static boolean isExcluded(IPath resourcePath, - char[][] exclusionPatterns) { - if (exclusionPatterns == null) { - return false; - } - char[] path = resourcePath.toString().toCharArray(); - for (int i = 0, length = exclusionPatterns.length; i < length; i++) { - if (CharOperation.pathMatch(exclusionPatterns[i], path, true, '/')) { - return true; - } - } - return false; - } - - private static Boolean fgIsJDTCore_1_5 = null; - - /** - * @return true if JRE 1.5 in enabled. - */ - public static boolean isJDTCore_1_5() { - if (fgIsJDTCore_1_5 == null) { - fgIsJDTCore_1_5 = JavaCore - .getDefaultOptions() - .containsKey( - "org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation") ? Boolean.TRUE //$NON-NLS-1$ - : Boolean.FALSE; - } - return fgIsJDTCore_1_5.booleanValue(); - } - - /** - * Helper method that tests if an classpath entry can be found in a - * container. <code>null</code> is returned if the entry can not be found - * or if the container does not allows the configuration of source - * attachments - * - * @param jproject - * The container's parent project - * @param containerPath - * The path of the container - * @param libPath - * The path of the library to be found - * @return IClasspathEntry A classpath entry from the container of - * <code>null</code> if the container can not be modified. - * @throws JavaModelException - */ - public static IClasspathEntry getClasspathEntryToEdit( - IJavaProject jproject, IPath containerPath, IPath libPath) - throws JavaModelException { - IClasspathContainer container = JavaCore.getClasspathContainer( - containerPath, jproject); - ClasspathContainerInitializer initializer = JavaCore - .getClasspathContainerInitializer(containerPath.segment(0)); - if (container != null - && initializer != null - && initializer.canUpdateClasspathContainer(containerPath, - jproject)) { - IClasspathEntry[] entries = container.getClasspathEntries(); - for (int i = 0; i < entries.length; i++) { - IClasspathEntry curr = entries[i]; - IClasspathEntry resolved = JavaCore - .getResolvedClasspathEntry(curr); - if (resolved != null && libPath.equals(resolved.getPath())) { - return curr; // return the real entry - } - } - } - return null; // attachment not possible - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PathUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PathUtil.java deleted file mode 100644 index 1b10f20ed..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PathUtil.java +++ /dev/null @@ -1,307 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.io.File; -import java.util.StringTokenizer; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.jdt.core.IClasspathEntry; -import org.eclipse.jdt.core.IJarEntryResource; -import org.eclipse.jdt.core.IJavaElement; -import org.eclipse.jdt.core.IJavaProject; -import org.eclipse.jst.jsf.common.ui.IFileFolderConstants; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; - -/** - * Collection of helper methods to manage and convert links Originally part of - * the LinksManager (com.ibm.iwt.parser.util) - */ -public final class PathUtil { - private static final String FORWARD_SLASH = "/"; //$NON-NLS-1$ - - private static final String RELATIVE_PATH_SIGNAL = IFileFolderConstants.DOT - + IFileFolderConstants.DOT + IFileFolderConstants.PATH_SEPARATOR; - - /** - * adjust relative path isside the absolute path - * @param path - * @return the adjusted path - */ - public static String adjustPath(String path) { - int i = 0; - while ((i = path.indexOf(RELATIVE_PATH_SIGNAL)) > 0) { - // split the string into two - String part1 = path.substring(0, i - 1); - String part2 = path - .substring(i + RELATIVE_PATH_SIGNAL.length() - 1); - // strip one path seg from part1 - int j = part1.lastIndexOf(FORWARD_SLASH); - if (j == -1) { - return "";//$NON-NLS-1$ - } - part1 = part1.substring(0, j); - path = part1 + part2; - } - return path; - } - - /** - * Append trailing url slash if needed - * @param input - * @return the string - */ - public static String appendTrailingURLSlash(String input) { - // check to see already a slash - if (!input.endsWith(FORWARD_SLASH)) { - input += FORWARD_SLASH; - } - return input; - } - - /** - * Convert to relative url based on base - * @param input - * @param base - * @return the string - */ - public static String convertToRelativePath(String input, String base) { - // tokenize the strings - StringTokenizer inputTokenizer = new StringTokenizer(input, - FORWARD_SLASH); - StringTokenizer baseTokenizer = new StringTokenizer(base, FORWARD_SLASH); - String token1 = "", token2 = "";//$NON-NLS-2$//$NON-NLS-1$ - // - // Go through until equls - while (true) { - if (!inputTokenizer.hasMoreTokens() - || !baseTokenizer.hasMoreTokens()) { - break; - } - token1 = baseTokenizer.nextToken(); - token2 = inputTokenizer.nextToken(); - if (!token1.equals(token2)) { - break; - } - } - // now generate the backs - String output = "";//$NON-NLS-1$ - while (baseTokenizer.hasMoreTokens()) { - baseTokenizer.nextToken(); - output += RELATIVE_PATH_SIGNAL; - } - output += token2; - // generate the rest - while (inputTokenizer.hasMoreTokens()) { - output = output + FORWARD_SLASH + inputTokenizer.nextToken(); - } - return output; - } - - /** - * @param projectName - * @param path - * @return the path in the project converted to a path relative to the - * web folder - */ - public static String convertToWebPath(String projectName, String path) { - String name = ""; //$NON-NLS-1$ - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( - projectName); - String webrootName = WebrootUtil.getWebContentContainer(project).getName(); - - if (path.indexOf(webrootName) != -1) { - name = projectName + IFileFolderConstants.PATH_SEPARATOR - + webrootName; - } else { - name = projectName; - } - int index = path.indexOf(projectName); - - return path.substring(index + name.length()); - } - - /** - * convert path relative to current active file to absolute path in - * filesystem - * - * @param uri - * the relative path - * @param curFile - * @return absolute path in file system - */ - public static String convertToAbsolutePath(String uri, IFile curFile) { - if (uri == null || uri.trim().equals("")) { //$NON-NLS-1$ - return uri; - } - String webroot = ""; //$NON-NLS-1$ - IFile jsp = curFile; - try { - if (jsp == null) { - jsp = ((IFileEditorInput) getActivePage() - .getActiveEditor().getEditorInput()).getFile(); - } - if (jsp != null) { - String webrootName = WebrootUtil.getWebContentContainer( - jsp.getProject()).getName(); - webroot = jsp.getProject().getFolder(webrootName).getLocation() - .toString(); - } - } catch (NullPointerException e) { - return uri; - } - if (uri.startsWith(IFileFolderConstants.PATH_SEPARATOR)) - { - return webroot + uri; - } - if (jsp != null) { - IContainer con = jsp.getParent(); - if (con != null) { - IPath path = con.getLocation(); - if (path != null) { - String aPath = path.toString() + File.separator + uri; - aPath = aPath.replace('/', File.separatorChar); - aPath = aPath.replace('\\', File.separatorChar); - if (aPath.endsWith(File.separator)) { - aPath += IFileFolderConstants.PATH_SEPARATOR; - } - File file = new File(aPath); - if (file.exists() && file.isFile()) { - return file.getAbsolutePath(); - } - return uri; - } - } - } - return uri; - } - - /** - * Returns the active workbench window. - * - * @return the active workbench window. this can be null but I've never seen - * it. - */ - private static IWorkbenchWindow getActiveWorkbenchWindow() { - if (PlatformUI.getWorkbench() == null) { - return null; - } - return PlatformUI.getWorkbench().getActiveWorkbenchWindow(); - } - - /** - * Returns the active workbench page. Note that the active page may not be - * the one that the user perceives as active in some situations so this - * method of obtaining the activate page should only be used if no other - * method is available. - * - * @return the active workbench page - */ - private static IWorkbenchPage getActivePage() { - IWorkbenchWindow window = getActiveWorkbenchWindow(); - if (window == null) { - return null; - } - return window.getActivePage(); - } - /** - * @param javaProject - * @param parent - * @return the IPath for a a classpath object (?) - */ - public static IPath getPathOnClasspath(IJavaProject javaProject, - Object parent) { - IPath result = null; - if (javaProject == null || parent == null) { - return new Path(""); //$NON-NLS-1$ - } - IClasspathEntry[] entries = javaProject.readRawClasspath(); - IPath classPath = null; - if (parent instanceof IResource) { - if (((javaProject != null) && !javaProject - .isOnClasspath((IResource) parent))) { - return new Path(""); //$NON-NLS-1$ - } - if (parent instanceof IFile) { - IPath elementPath = ((IFile) parent).getFullPath(); - if (((IFile) parent).getFileExtension().equalsIgnoreCase( - IFileFolderConstants.EXT_PROPERTIES)) { - int machings = 0; - try { - for (int i = 0; i < entries.length; i++) { - // Determine whether on this classentry's path - int n = entries[i].getPath().matchingFirstSegments( - elementPath); - if (n > machings) { - // Get package name - machings = n; - classPath = elementPath.removeFirstSegments( - machings).removeLastSegments(1); - } - } - - // Not on the classpath? - if (classPath == null) { - return null; - } else if (classPath.segmentCount() > 0) { - IJavaElement element = javaProject - .findElement(classPath); - if (element != null) { - IPath path = element.getPath(); - if (path != null) { - IPath path1 = path - .removeFirstSegments(machings); - - String fileName = ((IFile) parent) - .getName(); - if (fileName != null) { - result = path1.append(fileName); - } - } - } - - } else { - result = ((IFile) parent).getFullPath() - .removeFirstSegments(machings); - } - } catch (Exception e) { - return null; - } - } - } - } else if (parent instanceof IJarEntryResource) { - IPath elementPath = ((IJarEntryResource) parent).getFullPath(); - if (elementPath.getFileExtension().equalsIgnoreCase( - IFileFolderConstants.EXT_PROPERTIES)) { - result = elementPath; - } - } - if (result != null) { - return result; - } - return new Path(""); //$NON-NLS-1$ - } - - private PathUtil() - { - // utility class, no instantiation - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PixelConverter.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PixelConverter.java deleted file mode 100644 index 48d5b3749..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PixelConverter.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 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 - * Oracle -- copied into common ui codebase for JSF use - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.FontMetrics; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.widgets.Control; - -import org.eclipse.jface.dialogs.Dialog; - -/** - * @author cbateman - * - */ -public class PixelConverter { - - private final FontMetrics fFontMetrics; - - /** - * @param control - */ - public PixelConverter(Control control) { - this(control.getFont()); - } - - /** - * @param font - */ - public PixelConverter(Font font) { - GC gc = new GC(font.getDevice()); - gc.setFont(font); - fFontMetrics= gc.getFontMetrics(); - gc.dispose(); - } - - - /** - * @param chars - * @return the convert height in pixels - */ - public int convertHeightInCharsToPixels(int chars) { - return Dialog.convertHeightInCharsToPixels(fFontMetrics, chars); - } - - /** - * @param dlus - * @return the pixel - */ - public int convertHorizontalDLUsToPixels(int dlus) { - return Dialog.convertHorizontalDLUsToPixels(fFontMetrics, dlus); - } - - /** - * @param dlus - * @return the vertical pixels - */ - public int convertVerticalDLUsToPixels(int dlus) { - return Dialog.convertVerticalDLUsToPixels(fFontMetrics, dlus); - } - - - /** - * @param chars - * @return the pixel value - */ - public int convertWidthInCharsToPixels(int chars) { - return Dialog.convertWidthInCharsToPixels(fFontMetrics, chars); - } - -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PluginImageHelper.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PluginImageHelper.java deleted file mode 100644 index 8ebcd0354..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PluginImageHelper.java +++ /dev/null @@ -1,213 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.util.HashMap; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.resource.ImageRegistry; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.plugin.AbstractUIPlugin; - -/** - * @author mengbo - */ -public class PluginImageHelper { - private static PluginImageHelper _instance = null; - - /** - * Gets the instance. - * - * @return Returns a TaglibPluginImageHelper - */ - public synchronized static PluginImageHelper getInstance() { - if (_instance == null) { - _instance = new PluginImageHelper(); - } - return _instance; - } - - // save a descriptor for each image - private HashMap _imageDescRegistry = null; - - private final String PLUGIN_SEPARATOR = "^"; //$NON-NLS-1$ - - /** - * Creates an image from the given resource and adds the image to the image - * registry. - * - * @param resource - * @param pluginId - * @return Image - */ - private Image createImage(String resource, String pluginId) { - ImageDescriptor desc = getImageDescriptor(resource, pluginId); - Image image = null; - - if (desc != null) { - image = desc.createImage(); - - // dont add the missing image descriptor image to the image - // registry - if (!desc.equals(ImageDescriptor.getMissingImageDescriptor())) { - String thePluginId = pluginId; - if (thePluginId == null) { - return null; - } - String key = thePluginId + PLUGIN_SEPARATOR + resource; - getImageRegistry().put(key, image); - } - } - return image; - } - - /** - * Creates an image descriptor from the given imageFilePath in the given - * pluginId and adds the image descriptor to the image descriptor registry. - * If an image descriptor could not be created, the default "missing" image - * descriptor is returned but not added to the image descriptor registry. - * - * @param imageFilePath - * @param pluginId - * if null, look in this plugin - * @return ImageDescriptor image descriptor for imageFilePath or default - * "missing" image descriptor if resource could not be found - */ - private ImageDescriptor createImageDescriptor(String imageFilePath, - String pluginId) { - String thePluginId = pluginId; - if (thePluginId == null) { - return null; - } - - ImageDescriptor imageDescriptor = AbstractUIPlugin - .imageDescriptorFromPlugin(thePluginId, imageFilePath); - if (imageDescriptor != null) { - String key = thePluginId + PLUGIN_SEPARATOR + imageFilePath; - getImageDescriptorRegistry().put(key, imageDescriptor); - } else { - imageDescriptor = ImageDescriptor.getMissingImageDescriptor(); - } - - return imageDescriptor; - } - - /** - * Retrieves the image associated with resource from the image registry. If - * the image cannot be retrieved, attempt to find and load the image at the - * location specified in resource. - * - * @param resource - * the image to retrieve - * @return Image the image associated with resource or null if one could not - * be found - */ - public Image getImage(String resource) { - return getImage(resource, null); - } - - /** - * Retrieves the image associated with resource from the image registry. If - * the image cannot be retrieved, attempt to find and load the image at the - * location specified in resource. - * - * @param resource - * the image to retrieve - * @param pluginId - * @return Image the image associated with resource or null if one could not - * be found - */ - public Image getImage(String resource, String pluginId) { - String thePluginId = pluginId; - if (thePluginId == null) { - return null; - } - - String key = thePluginId + PLUGIN_SEPARATOR + resource; - - Image image = getImageRegistry().get(key); - if (image == null) { - // create an image - image = createImage(resource, pluginId); - } - return image; - } - - /** - * Retrieves the image descriptor associated with resource from the image - * descriptor registry. If the image descriptor cannot be retrieved, attempt - * to find and load the image descriptor at the location specified in - * resource. - * - * @param resource - * the image descriptor to retrieve - * @return ImageDescriptor the image descriptor assocated with resource or - * the default "missing" image descriptor if one could not be found - */ - public ImageDescriptor getImageDescriptor(String resource) { - return getImageDescriptor(resource, null); - } - - /** - * Retrieves the image descriptor associated with resource in pluginId from - * the image descriptor registry. If the image descriptor cannot be - * retrieved, attempt to find and load the image descriptor at the location - * specified in resource in pluginId. - * - * @param resource - * the image descriptor to retrieve - * @param pluginId - * the plugin the resource is located. if null, use look in this - * plugin - * @return ImageDescriptor the image descriptor assocated with resource or - * the default "missing" image descriptor if one could not be found - */ - public ImageDescriptor getImageDescriptor(String resource, String pluginId) { - ImageDescriptor imageDescriptor = null; - String thePluginId = pluginId; - if (thePluginId == null) { - return null; - } - - String key = thePluginId + PLUGIN_SEPARATOR + resource; - Object o = getImageDescriptorRegistry().get(key); - if (o == null) { - // create a descriptor - imageDescriptor = createImageDescriptor(resource, pluginId); - } else { - imageDescriptor = (ImageDescriptor) o; - } - return imageDescriptor; - } - - /** - * Returns the image descriptor registry for this plugin. - * - * @return HashMap - image descriptor registry for this plugin - */ - private HashMap getImageDescriptorRegistry() { - if (_imageDescRegistry == null) { - _imageDescRegistry = new HashMap(); - } - return _imageDescRegistry; - } - - /** - * Returns the image registry for this plugin. - * - * @return ImageRegistry - image registry for this plugin - */ - private ImageRegistry getImageRegistry() { - return JFaceResources.getImageRegistry(); - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PropertyUtils.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PropertyUtils.java deleted file mode 100644 index 47bded01a..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/PropertyUtils.java +++ /dev/null @@ -1,789 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Point; -import java.awt.Rectangle; -import java.awt.Toolkit; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.MissingResourceException; -import java.util.Properties; -import java.util.ResourceBundle; -import java.util.StringTokenizer; - -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; - -/** - * The main purpose of this class is to give better access methods for property - * and resource bundle access. - * - * @author mengbo - */ -public final class PropertyUtils { - - private static final String ENCODED_CHAR_PERCENT = "%25"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_CARRIAGE_RETURN = "%0d"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_TAB = "%09"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_NEWLINE = "%0a"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_SPACE = "%20"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_COLON = "%3a"; //$NON-NLS-1$ - private static final String ENCODED_CHAR_EQUALS = "%3d"; //$NON-NLS-1$ - - - // WARNING: There can be NO static logging line here since the logger uses - // this class to figure out the preferences - // for the logging system. "Logging" an error here would be useless since - // you might be setting up the logging system - // via a call to PropertyUtils.getServerProperty() instead it uses - // "System.err.println". - - // This is the name for the properties file. - // The prop-name will be prepended to this string.... - private static final String NAME_PROPERTIES = ".props"; //$NON-NLS-1$ - - private static final String STR_BOUNDS_END = ".bounds"; // assumes the //$NON-NLS-1$ - - // window name or - // name list is - // prepended - - // ////////////////////////////////////////////////////////////////////////// - // Property get methods. - // ////////////////////////////////////////////////////////////////////////// - /** - * @param props - * @param key - * @param theDefault - * @return the property - */ - public static String getProperty(Properties props, String key, - String theDefault) { - try { - String value = props.getProperty(key, theDefault); - if ((value != null) && (value.length() == 0)) { - value = null; - } - // check again for null, since some versions of the jdk ignore the - // default - // if an empty property exists. - if (value == null) { - value = theDefault; - } - return value; - } catch (Exception ee) { - return theDefault; - } - } - - /** - * @param props - * @param key - * @return the value for key in props, may return null - */ - public static String getProperty(Properties props, String key) { - try { - String value = props.getProperty(key); - if ((value != null) && (value.length() == 0)) { - value = null; - } - return value; - } catch (Exception ee) { - return null; - } - } - - /** - * @param props - * @param key - * @param defaultValue - * @param minimumValue - * @return the integer property value for key, or defaultValue - * if none. Enforces minimumValue in all cases - */ - public static int getPropertyValue(Properties props, String key, - int defaultValue, int minimumValue) { - int theValue = getPropertyValue(props, key, defaultValue); - - if (theValue < minimumValue) { - theValue = minimumValue; - } - return theValue; - } - - /** - * @param props - * @param key - * @param defaultValue - * @return the integer value for key in props or defaultValue if none - */ - public static int getPropertyValue(Properties props, String key, - int defaultValue) { - String stringValue = getProperty(props, key); - if (stringValue != null) { - try { - return Integer.parseInt(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * @param props - * @param key - * @param defaultValue - * @return the long value for key props or defaultValue if none - */ - public static long getPropertyLongValue(Properties props, String key, - long defaultValue) { - String stringValue = getProperty(props, key); - if (stringValue != null) { - try { - return Long.parseLong(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * @param props - * @param key - * @param bDefault - * @return true if props has a value for key - */ - public static boolean isProperty(Properties props, String key, - boolean bDefault) { - return getProperty(props, key, "" + bDefault).equals("" + true); //$NON-NLS-1$ //$NON-NLS-2$ - } - - /** - * @param props - * @param key - * @return the string values in props for key tokenized from - * a comma-separated string - */ - public static String[] getPropertyStrings(Properties props, String key) { - String tokenString = getProperty(props, key); - - if (tokenString == null) { - return new String[0]; - } - StringTokenizer tokenizer = new StringTokenizer(tokenString, ","); //$NON-NLS-1$ - String[] pNames = new String[tokenizer.countTokens()]; - - for (int ii = 0; ii < pNames.length; ii++) { - pNames[ii] = ((String) tokenizer.nextElement()).trim(); - } - return pNames; - } - - // ////////////////////////////////////////////////////////////////////////// - // Resource bundle get methods. - // ////////////////////////////////////////////////////////////////////////// - /** - * @param bundle - * @param key - * @param theDefault - * @return the string value from bundle for key or default if none - */ - public static String getResourceProperty(ResourceBundle bundle, String key, - String theDefault) { - try { - String value = bundle.getString(key); - if ((value == null) || (value.length() == 0)) { - value = theDefault; - } - return value; - } - catch(NullPointerException npe) - { - return theDefault; - } - catch (MissingResourceException mre) - { - return theDefault; - } - catch (ClassCastException cce) - { - return theDefault; - } - } - - /** - * @param bundle - * @param key - * @return the value for key in bundle or null if none - */ - public static String getResourceProperty(ResourceBundle bundle, String key) { - try - { - String value = bundle.getString(key); - if ((value != null) && (value.length() == 0)) - { - value = null; - } - return value; - } - catch(NullPointerException npe) - { - return null; - } - catch (MissingResourceException mre) - { - return null; - } - catch (ClassCastException cce) - { - return null; - } - } - - /** - * @param bundle - * @param key - * @param defaultValue - * @param minimumValue - * @return the integer value for key in bundle or defaultValue if none - * Enforces minimum value in all cases - */ - public static int getResourcePropertyValue(ResourceBundle bundle, - String key, int defaultValue, int minimumValue) { - int theValue = getResourcePropertyValue(bundle, key, defaultValue); - - if (theValue < minimumValue) { - theValue = minimumValue; - } - return theValue; - } - - /** - * @param bundle - * @param key - * @param defaultValue - * @return the integer value for key in bundle or defaultValue if none - */ - public static int getResourcePropertyValue(ResourceBundle bundle, - String key, int defaultValue) { - String stringValue = getResourceProperty(bundle, key); - if (stringValue != null) { - try { - return Integer.parseInt(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * @param bundle - * @param key - * @param defaultValue - * @return the long value for key in bundle or default value if none - */ - public static long getResourcePropertyLongValue(ResourceBundle bundle, - String key, long defaultValue) { - String stringValue = getResourceProperty(bundle, key); - if (stringValue != null) { - try { - return Long.parseLong(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * @param bundle - * @param key - * @param bDefault - * @return true if bundle has a value for key - */ - public static boolean isResourceProperty(ResourceBundle bundle, String key, - boolean bDefault) { - return getResourceProperty(bundle, key, "" + bDefault) //$NON-NLS-1$ - .equals("" + true); //$NON-NLS-1$ - } - - // /////////////////////////////////////////////////////////////////////// - // Property misc routines - // /////////////////////////////////////////////////////////////////////// - /** - * @param theName - * @return the encoded name - */ - public static String encodeName(String theName) { - int theSize = theName.length(); - StringBuffer encoded = new StringBuffer(theSize); - char ch; - - for (int ii = 0; ii < theSize; ii++) { - ch = theName.charAt(ii); - switch (ch) { - // these are the set of illegal characters in a Property name - case '=': // %3d - encoded.append(ENCODED_CHAR_EQUALS); - break; - case ':': // %3a - encoded.append(ENCODED_CHAR_COLON); - break; - case ' ': // %20 - encoded.append(ENCODED_CHAR_SPACE); - break; - case '\n': // %0a - encoded.append(ENCODED_CHAR_NEWLINE); - break; - case '\t': // %09 - encoded.append(ENCODED_CHAR_TAB); - break; - case '\r': // %0d - encoded.append(ENCODED_CHAR_CARRIAGE_RETURN); - break; - case '%': // %25 - // added because its our encoding flag - encoded.append(ENCODED_CHAR_PERCENT); - break; - default: - encoded.append(ch); - break; - } - } - - return encoded.toString(); - } - - /** - * @param theName - * @return the decoded name - */ - public static String decodeName(String theName) { - int theSize = theName.length(); - int kk; - StringBuffer decoded = new StringBuffer(theSize); - char ch; - - for (int ii = 0; ii < theSize; ii++) { - ch = theName.charAt(ii); - if (ch == '%') { - ch = theName.charAt(++ii); - kk = Character.digit(ch, 16); - kk *= 16; - ch = theName.charAt(++ii); - kk += Character.digit(ch, 16); - decoded.append((char) kk); - } else { - decoded.append(ch); - } - } - - return decoded.toString(); - } - - /** - * @param propName - * @return the properties - * @throws IOException - * @throws FileNotFoundException - */ - public static Properties openProperties(String propName) - throws IOException, FileNotFoundException { - return openProperties(propName, null, true); - } - - /** - * @param propName - * @param propDefaults - * @return the properties - * @throws IOException - * @throws FileNotFoundException - */ - public static Properties openProperties(String propName, - Properties propDefaults) throws IOException, FileNotFoundException { - return openProperties(propName, propDefaults, true); - } - - /** - * @param propName - * @param propDefaults - * @param bCreatePropertiesPathname - * @return the properties - * @throws IOException - * @throws FileNotFoundException - */ - public static Properties openProperties(String propName, - Properties propDefaults, boolean bCreatePropertiesPathname) - throws IOException, FileNotFoundException { - Properties theProperties = new Properties(propDefaults); - - try { - String propertiesFilename = bCreatePropertiesPathname ? getPropertiesPathname(propName) - : propName; - InputStream theStream = new FileInputStream(propertiesFilename); - theProperties.load(theStream); - theStream.close(); - } catch (FileNotFoundException ee) { - if (propDefaults == null) { - throw ee; - } - } catch (IOException ee) { - if (propDefaults == null) { - throw ee; - } - } - - return theProperties; - } - - /** - * Combines two properties objects, with the second one as the default - * properties - * - * @param localProperties - * @param defaultProperties - * @return the combined properties - * @throws IOException - */ - public static Properties combineProperties(Properties localProperties, - Properties defaultProperties) throws IOException { - Properties theNewProperties = new Properties(); - - ByteArrayOutputStream os = new ByteArrayOutputStream(); - defaultProperties.store(os, ""); //$NON-NLS-1$ - localProperties.store(os, ""); //$NON-NLS-1$ - byte[] theData = os.toByteArray(); - ByteArrayInputStream is = new ByteArrayInputStream(theData); - theNewProperties.load(is); - - return theNewProperties; - } - - /** - * @param theFilename - * @return the encoded file name - */ - public static String encodeFilename(String theFilename) { - // make theFilename legal on the local system.... - String theSeparator = System.getProperty("file.separator"); //$NON-NLS-1$ - // replace all occurrances of the file separator with a ' ' - for (int ii = 0; ii < theSeparator.length(); ii++) { - char theChar = theSeparator.charAt(ii); - theFilename = theFilename.replace(theChar, ' '); - } - - return theFilename; - } - - /** - * @param baseName - * @return the properties path - */ - public static String getPropertiesPathname(String baseName) { - if (baseName.endsWith(NAME_PROPERTIES)) { - return System.getProperty("user.dir") //$NON-NLS-1$ - + System.getProperty("file.separator") //$NON-NLS-1$ - + encodeFilename(baseName); - } - return System.getProperty("user.dir") //$NON-NLS-1$ - + System.getProperty("file.separator") //$NON-NLS-1$ - + encodeFilename(baseName) + NAME_PROPERTIES; - } - - // ///////////////////////////////////////////////////////////////////////// - // These are generic routines that are used to get/set/save window bounds - - private static final int INSET = 40; - - /** - * Set the initial bounds (size & location) of a component. This will get - * the location from the preferences file based on the values of the "names" - * parameter. These values will be encoded to make a legal properties name, - * joined togther with ".", and the value STR_BOUNDS_END will be appended. - * The resulting name will be used to obtain the intial bounds value from - * the properties file, which will be decoded and the specified component - * will then be set to that value. - * @param props - * @param theComponent - * @param names - * @param defaultValue - */ - public static void setComponentBounds(Properties props, - Component theComponent, String names[], String defaultValue) { - setComponentBounds(props, theComponent, names, defaultValue, false); - } - - /** - * @param props - * @param theComponent - * @param names - * @param defaultValue - * @param bEnsureDesktopVisibility - */ - public static void setComponentBounds(Properties props, - Component theComponent, String names[], String defaultValue, - boolean bEnsureDesktopVisibility) { - String tmpString = getComponentPropertyName(names, STR_BOUNDS_END); - setComponentBounds(props, theComponent, tmpString, defaultValue, - bEnsureDesktopVisibility); - } - - /** - * @param props - * @param theComponent - * @param thePropertyName - * @param defaultValue - */ - public static void setComponentBounds(Properties props, - Component theComponent, String thePropertyName, String defaultValue) { - setComponentBounds(props, theComponent, thePropertyName, defaultValue, - false); - } - - /** - * @param props - * @param theComponent - * @param thePropertyName - * @param defaultValue - * @param bEnsureDesktopVisibility - */ - public static void setComponentBounds(Properties props, - Component theComponent, String thePropertyName, - String defaultValue, boolean bEnsureDesktopVisibility) { - String tmpString = props.getProperty(thePropertyName, defaultValue); - Rectangle theValue = decodeBounds(tmpString); - theComponent.setBounds(theValue); - if (bEnsureDesktopVisibility) { - // make sure that this component is visible on the desktop... - // verify that this window is visible... - Point theLoc = theComponent.getLocation(); - // get width/height of desktop.... - Dimension portSize = new Dimension(Toolkit.getDefaultToolkit() - .getScreenSize()); - if (theLoc.x > portSize.width) // move it to top - theLoc.x = INSET; - if (theLoc.y > portSize.height) // move it to left - theLoc.y = INSET; - theComponent.setLocation(theLoc); - } - } - - /** - * @param props - * @param theComponent - * @param names - */ - public static void saveComponentBounds(Properties props, - Component theComponent, String names[]) { - String tmpString = getComponentPropertyName(names, STR_BOUNDS_END); - saveComponentBounds(props, theComponent, tmpString); - } - - /** - * @param props - * @param theComponent - * @param thePropertyName - */ - public static void saveComponentBounds(Properties props, - Component theComponent, String thePropertyName) { - Rectangle theBounds = theComponent.getBounds(); - String theValue = encodeBounds(theBounds); - props.put(thePropertyName, theValue); - } - - /** - * @param names - * @param subsystemName - * @return the component property name or "" - */ - public static String getComponentPropertyName(String names[], - String subsystemName) { - String tmpString = ""; //$NON-NLS-1$ - - for (int ii = 0; ii < names.length; ii++) { - tmpString = tmpString + (ii > 0 ? "." : "") //$NON-NLS-1$ //$NON-NLS-2$ - + PropertyUtils.encodeName(names[ii]); - } - if (subsystemName.startsWith(".") == false) //$NON-NLS-1$ - tmpString += "."; //$NON-NLS-1$ - tmpString = tmpString + subsystemName; - return tmpString; - } - - /** - * Decode the comma separated values stored in sBounds. This method is - * normally called to decode the location/size of a component which has been - * saved into a Properties object. See encodeBounds(); Order of items in the - * string is (x, y, w, h) - * @param sBounds - * @return the rectangle - */ - public static Rectangle decodeBounds(String sBounds) { - int index; - int ii; - int theValue[] = new int[4]; - String tmpString; - String restString = sBounds; - - for (ii = 0; ii < 4; ii++) { - theValue[ii] = 0; - } - try { - for (ii = 0; ii < 4; ii++) { - index = restString.indexOf(","); //$NON-NLS-1$ - if (index > 0) { - tmpString = restString.substring(0, index); - restString = restString.substring(index + 1); - } else { - tmpString = restString; // should only happen on the last - // one.... - restString = null; // will cause an exception if not last - // one... - } - theValue[ii] = Integer.valueOf(tmpString).intValue(); - } - } catch (Exception ee)// NOPMD - { - // the property value maybe an invalid value, the editor should show - // these to user. - } - - return new Rectangle(theValue[0], theValue[1], theValue[2], theValue[3]); - } - - /** - * * Encode the bounds of a component into a comma separated list * that is - * appropriate for storing in a Properties object. * See decodeBounds(); - * @param rBounds - * @return the encoded bounds - */ - public static String encodeBounds(Rectangle rBounds) { - return "" + rBounds.x + "," + rBounds.y + "," + rBounds.width + "," //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ - + rBounds.height; - } - - /** - * Methods for creating Properties objects from strings. - * - * Then "Encoded" versions are used on values that are stored into a - * properties file (think of them as sub-properties). They do the encoding - * necessary to turn a properties object into a string that has legal - * "value" syntax (they actually do more than they need to, but its all - * non-destructive). - * @param thePropertyString - * @return the properties from the string - * @throws IOException - */ - public static Properties getPropertiesFromString(String thePropertyString) - throws IOException { - if (thePropertyString == null) - return null; - ByteArrayInputStream in = new ByteArrayInputStream(thePropertyString - .getBytes()); - - Properties props = new Properties(); - props.load(in); // throws IOException - in = null; - return props; - } - - /** - * @param theEncodedPropertyString - * @return the properties - * @throws IOException - */ - public static Properties getPropertiesFromEncodedString( - String theEncodedPropertyString) throws IOException { - if (theEncodedPropertyString == null) - return null; - return (getPropertiesFromString(decodeName(theEncodedPropertyString))); - } - - /** - * @param theEncodedPropertyString - * @return the properties - */ - public static Properties encodedStringToProperties( - String theEncodedPropertyString) { - try { - return getPropertiesFromEncodedString(theEncodedPropertyString); - } catch (IOException ee) { - return null; - } - } - - /** - * @param props - * @param comment - * @return the string - * @throws IOException - */ - public static String savePropertiesToString(Properties props, String comment) - throws IOException { - if (props == null) - return null; - ByteArrayOutputStream out = new ByteArrayOutputStream(); - props.store(out, comment); - String tmpString = out.toString(); - out = null; - return tmpString; - } - - /** - * @param props - * @param comment - * @return the encoded string - * @throws IOException - */ - public static String savePropertiesToEncodedString(Properties props, - String comment) throws IOException { - if (props == null) - return null; - return encodeName(savePropertiesToString(props, comment)); - } - - /** - * @param props - * @return the encoded string - */ - public static String propertiesToEncodedString(Properties props) { - try { - return savePropertiesToEncodedString(props, ""); //$NON-NLS-1$ - } catch (IOException ee)// NOPMD - { - JSFUICommonPlugin.getLogger(PropertyUtils.class).error("saving properties", ee); //$NON-NLS-1$ - } - return null; - } - - private PropertyUtils() - { - // no instantiation - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/ResourceUtils.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/ResourceUtils.java deleted file mode 100644 index e35ee83ab..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/ResourceUtils.java +++ /dev/null @@ -1,286 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.io.IOException; -import java.io.InputStream; -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; - -/** - * Give easy access to a resource bundle. - * - * @author mengbo - */ -public abstract class ResourceUtils { - private static final String LOG_RESOURCE_UTILS_MSG_KEY = "log.ResourceUtils"; //$NON-NLS-1$ - private static Logger _log = JSFUICommonPlugin.getLogger(ResourceUtils.class); - /** - * the resource bundle accessible by all children - */ - protected ResourceBundle _resources; - - /** - * Empty Constructor. - */ - protected ResourceUtils() { - // restrict instantiation - } - - /** - * Easy way to set the bundle and get a fatal log messages and an alert if - * the resource bundle is not found. - * - * @param resource - * @param bundleLocation - */ - protected void setBundle(ResourceBundle resource, String bundleLocation) { - _resources = resource; - if (_resources == null) { - // log.ResourceUtils=Missing Resource Bundle "{0}". - _log.error(LOG_RESOURCE_UTILS_MSG_KEY, bundleLocation); - // pluginName=Web Application Development Common - JSFUICommonPlugin.getAlerts().error("pluginName", LOG_RESOURCE_UTILS_MSG_KEY, //$NON-NLS-1$ - bundleLocation); - } - } - - /** - * Get the property defined in the resource bundle for the given key. This - * property should be an integer. If none is defined - * (MissingResourceException), return the default. - * - * @param key - * the key in the resource bundle. - * @param defaultValue - * default int to return if no value is found for the key. - * @return the integer value for key or defaultValue if none - */ - public int getValue(String key, int defaultValue) { - String stringValue = getString(key); - if (stringValue != null) { - try { - return Integer.parseInt(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * Get the property defined in the resource bundle for the given key. This - * property should be an long. If none is defined - * (MissingResourceException), return the default. - * - * @param key - * the key in the resource bundle. - * @param defaultValue - * default long to return if no value is found for the key. - * @return the long value for key or defaultValue if none - */ - public long getValue(String key, long defaultValue) { - String stringValue = getString(key); - if (stringValue != null) { - try { - return Long.parseLong(stringValue); - } catch (NumberFormatException ee)// NOPMD - { - // the property value maybe an invalid value, the editor should - // show these to user. - } - } - return defaultValue; - } - - /** - * Get the property defined in the resource bundle for the given key. This - * property should be boolean ("true" of "false"). If none is defined - * (MissingResourceException), return the default. - * - * @param key - * the key in the resource bundle. - * @return true if there is a resource corresponding to key - */ - public boolean isResource(String key) { - return getString(key).equals("" + true); //$NON-NLS-1$ - } - - /** - * Get the property defined in the resource bundle for the given key. If - * none is defined (MissingResourceException), return null. - * - * @param key - * the key in the resource bundle. - * @return the string value for key or key if not found - */ - public String getString(String key) { - try { - return _resources.getString(key); - } catch (MissingResourceException ee) { - return key; - } - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param arg0 - * the first argument. - * @return the formated string with the argument inline. - */ - public String getString(String key, Object arg0) { - Object[] args = new Object[1]; - args[0] = arg0; - - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param arg0 - * the first argument. - * @param arg1 - * the second argument. - * @return the formated string with the argument inline. - */ - public String getString(String key, Object arg0, Object arg1) { - Object[] args = new Object[2]; - args[0] = arg0; - args[1] = arg1; - - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param arg0 - * the first argument. - * @param arg1 - * the second argument. - * @param arg2 - * the third argument. - * @return the formated string with the argument inline. - */ - public String getString(String key, Object arg0, Object arg1, Object arg2) { - Object[] args = new Object[3]; - args[0] = arg0; - args[1] = arg1; - args[2] = arg2; - - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param arg0 - * the first argument. - * @param arg1 - * the second argument. - * @param arg2 - * the third argument. - * @param arg3 - * the forth argument. - * @return the formated string with the argument inline. - */ - public String getString(String key, Object arg0, Object arg1, Object arg2, - Object arg3) { - Object[] args = new Object[4]; - args[0] = arg0; - args[1] = arg1; - args[2] = arg2; - args[3] = arg3; - - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param arg0 - * the first argument. - * @param arg1 - * the second argument. - * @param arg2 - * the third argument. - * @param arg3 - * the forth argument. - * @param arg4 - * the forth argument. - * @return the formated string with the argument inline. - */ - public String getString(String key, Object arg0, Object arg1, Object arg2, - Object arg3, Object arg4) { - Object[] args = new Object[5]; - args[0] = arg0; - args[1] = arg1; - args[2] = arg2; - args[3] = arg3; - args[4] = arg4; - - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Build a formated string from the resource bundle. - * - * @param key - * the key into the resource bundle that has the formated string. - * @param args - * an array of arguments - * @return the formated string with the argument inline. - */ - public String getString(String key, Object[] args) { - MessageFormat formatter = new MessageFormat(getString(key)); - return formatter.format(args); - } - - /** - * Use in the try-finally idiom for inputStream to ensure close - * and suppress exceptions on close - * @param inputStream - */ - public static void ensureClosed(InputStream inputStream) { - if (inputStream != null) { - try { - inputStream.close(); - } catch (IOException e) { - // Ignore - } - } - - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StringUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StringUtil.java deleted file mode 100644 index e914b600c..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StringUtil.java +++ /dev/null @@ -1,157 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.util.regex.Pattern; - -/** - * This is tool class for String processing. - * - * @author mengbo - */ -public class StringUtil { - - // pattern to find all end-of-paragraph and end-of-line html tags - // so they can be converted to newlines - final private static Pattern htmlToNewline = Pattern.compile("</p>|<br>"); //$NON-NLS-1$ - - // pattern to strip all <x> and </x> HTML tags - final private static Pattern removeHTMLTags = Pattern.compile("<[/?\\w\\s=\"\\.\\#]+>"); //$NON-NLS-1$ - - // pattern to find all runs of spaces longer than one - final private static Pattern trimInteriorWhitespace = Pattern.compile("[ ]+"); //$NON-NLS-1$ - - /** - * Split a java variable name into words For example, "_aJavaVariable" will - * split to "A Java Variable", "_aWTPPackageImplementation" will be "A WTP - * Package Implementation" - * - * @param variable - * @return String - */ - public static String splitVariable(String variable) { - StringBuffer output = new StringBuffer(""); //$NON-NLS-1$ - boolean isCapitalLeading = false; - boolean isLastSpace = false; - - for (int i = 0, n = variable.length(); i < n; i++) { - char letter = variable.charAt(i); - - if (letter == '_' || letter == '$') { - output.append(" "); //$NON-NLS-1$ - isCapitalLeading = false; - isLastSpace = true; - continue; - } - - if (Character.isLowerCase(letter)) { - int nextIndex = i + 1; - if (nextIndex < n) { - char nextLetter = variable.charAt(nextIndex); - if (Character.isUpperCase(nextLetter)) { - if (isCapitalLeading) { - output.append(letter); - isLastSpace = false; - } else { - output.append(Character.toUpperCase(letter)); - isLastSpace = false; - } - if (!isLastSpace) { - output.append(' '); - isLastSpace = true; - } - isCapitalLeading = false; - continue; - } - } - } - if (Character.isUpperCase(letter)) { - int nextIndex = i + 1; - if (nextIndex < n) { - char nextLetter = variable.charAt(nextIndex); - if (Character.isLowerCase(nextLetter)) { - if (!isLastSpace) { - output.append(' '); - isLastSpace = true; - } - output.append(letter); - isCapitalLeading = true; - isLastSpace = false; - continue; - } - } - } - if (isCapitalLeading) { - output.append(letter); - isLastSpace = false; - } else { - output.append(Character.toUpperCase(letter)); - isCapitalLeading = true; - isLastSpace = false; - } - } - - return output.toString().trim(); - } - - /** - * @param str1 - * @param str2 - * @return boolean - * - * Check if two strings match or not if str1=null and str2=null, it will - * return true - */ - public static boolean isSameString(String str1, String str2) { - if (str1 == null) { - return str2 == null; - } - return str1.equals(str2); - } - - /** - * - * @param text - * @return String Filter and convert a string, or normalize a string For - * example, - * <p> - * test - * </p> - * test1<a/> will be converted to: test\ntest1 - * - */ - public static String filterConvertString(String text) { - if (text == null) { - return ""; //$NON-NLS-1$ - } - - String result = htmlToNewline.matcher(text).replaceAll("\n"); //$NON-NLS-1$ - result = removeHTMLTags.matcher(result).replaceAll(""); //$NON-NLS-1$ - result = trimInteriorWhitespace.matcher(result).replaceAll(" "); //$NON-NLS-1$ - - return result; - } - - /** - * Determine whether a string is empty or not Example: null string -> return - * true; Example: "" string -> return true; Otherwise, will return false; - * @param str - * - * @return true if str is null or empty - */ - public static boolean isEmptyString(String str) { - if (str == null || str.length() == 0) { - return true; - } - return false; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StyleCombo.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StyleCombo.java deleted file mode 100644 index 4eccfa6d8..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/StyleCombo.java +++ /dev/null @@ -1,1877 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.util.Arrays; - -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.swt.SWT; -import org.eclipse.swt.accessibility.ACC; -import org.eclipse.swt.accessibility.AccessibleAdapter; -import org.eclipse.swt.accessibility.AccessibleControlAdapter; -import org.eclipse.swt.accessibility.AccessibleControlEvent; -import org.eclipse.swt.accessibility.AccessibleEvent; -import org.eclipse.swt.accessibility.AccessibleTextAdapter; -import org.eclipse.swt.accessibility.AccessibleTextEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Layout; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.TableItem; -import org.eclipse.swt.widgets.Text; -import org.eclipse.swt.widgets.TypedListener; - -/** - * The CCombo class represents a selectable user interface object that combines - * a text field and a list and issues notification when an item is selected from - * the list. - * <p> - * Note that although this class is a subclass of <code>Composite</code>, it - * does not make sense to add children to it, or set a layout on it. - * </p> - * <dl> - * <dt><b>Styles:</b> - * <dd>BORDER, READ_ONLY, FLAT</dd> - * <dt><b>Events:</b> - * <dd>Selection</dd> - * </dl> - */ -public final class StyleCombo extends Composite { - - Text text; - - Table table; - - int visibleItemCount = 4; - - Shell popup; - - Button arrow; - - boolean hasFocus; - - Listener listener, filter; - - Color foreground, background; - - Font font; - - String defaultValue; - - /** - * Constructs a new instance of this class given its parent and a style - * value describing its behavior and appearance. - * <p> - * The style value is either one of the style constants defined in class - * <code>SWT</code> which is applicable to instances of this class, or - * must be built by <em>bitwise OR</em>'ing together (that is, using the - * <code>int</code> "|" operator) two or more of those <code>SWT</code> - * style constants. The class description lists the style constants that are - * applicable to the class. Style bits are also inherited from superclasses. - * </p> - * - * @param parent - * a widget which will be the parent of the new instance (cannot - * be null) - * @param style - * the style of widget to construct - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the parent</li> - * </ul> - * - * @see SWT#BORDER - * @see SWT#READ_ONLY - * @see SWT#FLAT - */ - public StyleCombo(Composite parent, int style) { - super(parent, style = checkStyle(style)); - - listener = new Listener() { - public void handleEvent(Event event) { - if (popup == event.widget) { - popupEvent(event); - return; - } - if (text == event.widget) { - textEvent(event); - return; - } - if (table == event.widget) { - tableEvent(event); - return; - } - if (arrow == event.widget) { - arrowEvent(event); - return; - } - if (StyleCombo.this == event.widget) { - comboEvent(event); - return; - } - if (getShell() == event.widget) { - handleFocus(SWT.FocusOut); - } - } - }; - - filter = new Listener() { - public void handleEvent(Event event) { - Shell shell = ((Control) event.widget).getShell(); - if (shell == StyleCombo.this.getShell()) { - handleFocus(SWT.FocusOut); - } - } - }; - - int[] comboEvents = { SWT.Dispose, SWT.Move, SWT.Resize }; - for (int i = 0; i < comboEvents.length; i++) - this.addListener(comboEvents[i], listener); - - createText(style); - createArrow(style); - - createPopup(null, -1); - initAccessible(); - } - - /** - * @param style - */ - private void createArrow(int style) { - int arrowStyle = SWT.ARROW | SWT.DOWN; - if ((style & SWT.FLAT) != 0) { - arrowStyle |= SWT.FLAT; - } - arrow = new Button(this, arrowStyle); - int[] arrowEvents = { SWT.Selection, SWT.FocusIn }; - for (int i = 0; i < arrowEvents.length; i++) { - arrow.addListener(arrowEvents[i], listener); - } - } - - /** - * @param style - */ - private void createText(int style) { - int textStyle = SWT.SINGLE; - if ((style & SWT.READ_ONLY) != 0) { - textStyle |= SWT.READ_ONLY; - } - if ((style & SWT.FLAT) != 0) { - textStyle |= SWT.FLAT; - } - text = new Text(this, textStyle); - int[] textEvents = { SWT.KeyDown, SWT.KeyUp, SWT.Modify, SWT.MouseDown, - SWT.MouseUp, SWT.Traverse, SWT.FocusIn }; - for (int i = 0; i < textEvents.length; i++) { - text.addListener(textEvents[i], listener); - } - } - - static int checkStyle(int style) { - int mask = SWT.BORDER | SWT.READ_ONLY | SWT.FLAT | SWT.LEFT_TO_RIGHT - | SWT.RIGHT_TO_LEFT; - return style & mask; - } - - /** - * Adds the argument to the end of the receiver's list. - * - * @param string - * the new item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see #add(String,int) - */ - public void add(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TableItem item = new TableItem(table, SWT.NONE); - item.setText(0, string); - } - - /** - * Adds the argument to the receiver's list at the given zero-relative - * index. - * <p> - * Note: To add an item at the end of the list, use the result of calling - * <code>getItemCount()</code> as the index or use - * <code>add(String)</code>. - * </p> - * - * @param string - * the new item - * @param index - * the index for the item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * <li>ERROR_INVALID_RANGE - if the index is not between 0 - * and the number of elements in the list (inclusive)</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see #add(String) - */ - public void add(String string, int index) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TableItem item = new TableItem(table, SWT.NONE, index); - item.setText(0, string); - } - - /** - * Adds the listener to the collection of listeners who will be notified - * when the receiver's text is modified, by sending it one of the messages - * defined in the <code>ModifyListener</code> interface. - * - * @param listener1 - * the listener which should be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see ModifyListener - * @see #removeModifyListener - */ - public void addModifyListener(ModifyListener listener1) { - checkWidget(); - if (listener1 == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(listener1); - addListener(SWT.Modify, typedListener); - } - - /** - * Adds the listener to the collection of listeners who will be notified - * when the receiver's selection changes, by sending it one of the messages - * defined in the <code>SelectionListener</code> interface. - * <p> - * <code>widgetSelected</code> is called when the combo's list selection - * changes. <code>widgetDefaultSelected</code> is typically called when - * ENTER is pressed the combo's text area. - * </p> - * - * @param listener1 - * the listener which should be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see SelectionListener - * @see #removeSelectionListener - */ - public void addSelectionListener(SelectionListener listener1) { - checkWidget(); - if (listener1 == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - TypedListener typedListener = new TypedListener(listener1); - addListener(SWT.Selection, typedListener); - addListener(SWT.DefaultSelection, typedListener); - } - - void arrowEvent(Event event) { - switch (event.type) { - case SWT.FocusIn: { - handleFocus(SWT.FocusIn); - break; - } - case SWT.Selection: { - dropDown(!isDropped()); - break; - } - } - } - - /** - * Sets the selection in the receiver's text field to an empty selection - * starting just before the first character. If the text field is editable, - * this has the effect of placing the i-beam at the start of the text. - * <p> - * Note: To clear the selected items in the receiver's list, use - * <code>deselectAll()</code>. - * </p> - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see #deselectAll - */ - public void clearSelection() { - checkWidget(); - text.clearSelection(); - table.deselectAll(); - } - - void comboEvent(Event event) { - switch (event.type) { - case SWT.Dispose: - if (popup != null && !popup.isDisposed()) { - table.removeListener(SWT.Dispose, listener); - popup.dispose(); - } - Shell shell = getShell(); - shell.removeListener(SWT.Deactivate, listener); - Display display = getDisplay(); - display.removeFilter(SWT.FocusIn, filter); - popup = null; - text = null; - table = null; - arrow = null; - break; - case SWT.Move: - dropDown(false); - break; - case SWT.Resize: - internalLayout(false); - break; - } - } - - private String[] getTableItems() { - TableItem[] items = table.getItems(); - String[] values = new String[items.length]; - for (int i = 0; i < items.length; i++) { - values[i] = items[i].getText(0); - } - return values; - } - - public Point computeSize(int wHint, int hHint, boolean changed) { - checkWidget(); - int width = 0, height = 0; - String[] items = getTableItems(); - int textWidth = 0; - GC gc = new GC(text); - int spacer = gc.stringExtent(" ").x; //$NON-NLS-1$ - for (int i = 0; i < items.length; i++) { - textWidth = Math.max(gc.stringExtent(items[i]).x, textWidth); - } - gc.dispose(); - Point textSize = text.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed); - Point arrowSize = arrow.computeSize(SWT.DEFAULT, SWT.DEFAULT, changed); - Point listSize = table.computeSize(wHint, SWT.DEFAULT, changed); - int borderWidth = getBorderWidth(); - - height = Math.max(hHint, Math.max(textSize.y, arrowSize.y) + 2 - * borderWidth); - width = Math.max(wHint, Math.max(textWidth + 2 * spacer + arrowSize.x - + 2 * borderWidth, listSize.x)); - return new Point(width, height); - } - - void createPopup(String[] items, int selectionIndex) { - // create shell and list - popup = new Shell(getShell(), SWT.NO_TRIM | SWT.ON_TOP); - table = new Table(popup, SWT.SINGLE | SWT.V_SCROLL | SWT.FULL_SELECTION); - new TableColumn(table, SWT.LEFT); - if (font != null) { - table.setFont(font); - } - if (foreground != null) { - table.setForeground(foreground); - } - if (background != null) { - table.setBackground(background); - } - - int[] popupEvents = { SWT.Close, SWT.Paint, SWT.Deactivate }; - for (int i = 0; i < popupEvents.length; i++) { - popup.addListener(popupEvents[i], listener); - } - int[] listEvents = { SWT.MouseUp, SWT.Selection, SWT.Traverse, - SWT.KeyDown, SWT.KeyUp, SWT.FocusIn, SWT.FocusOut, SWT.Dispose }; - for (int i = 0; i < listEvents.length; i++) { - table.addListener(listEvents[i], listener); - } - if (items != null) { - setItems(items); - } - if (selectionIndex != -1) { - select(selectionIndex); - } - } - - /** - * Deselects the item at the given zero-relative index in the receiver's - * list. If the item at the index was already deselected, it remains - * deselected. Indices that are out of range are ignored. - * - * @param index - * the index of the item to deselect - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void deselect(int index) { - checkWidget(); - table.deselect(index); - } - - /** - * Deselects all selected items in the receiver's list. - * <p> - * Note: To clear the selection in the receiver's text field, use - * <code>clearSelection()</code>. - * </p> - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see #clearSelection - */ - public void deselectAll() { - checkWidget(); - table.deselectAll(); - } - - void dropDown(boolean drop) { - if (drop == isDropped()) { - return; - } - if (!drop) { - popup.setVisible(false); - table.getColumns()[0].setWidth(0); - if (!isDisposed() && arrow.isFocusControl()) { - text.setFocus(); - } - return; - } - - if (getShell() != popup.getParent()) { - String[] items = getTableItems(); - int selectionIndex = table.getSelectionIndex(); - table.removeListener(SWT.Dispose, listener); - popup.dispose(); - popup = null; - table = null; - createPopup(items, selectionIndex); - } - - Point size = getSize(); - int itemCount = table.getItemCount(); - itemCount = (itemCount == 0) ? visibleItemCount : Math.min( - visibleItemCount, itemCount); - int itemHeight = table.getItemHeight() * itemCount; - Point tableSize = table.computeSize(SWT.DEFAULT, itemHeight, false); - // int tableWidth = this.getClientArea() - table.setBounds(1, 1, Math.max(size.x - 2, tableSize.x), tableSize.y - - table.getHorizontalBar().getSize().y + 2); - - int index = table.getSelectionIndex(); - if (index != -1) { - table.setTopIndex(index); - } - Display display = getDisplay(); - Rectangle tableRect = table.getBounds(); - Rectangle parentRect = display.map(getParent(), null, getBounds()); - Point comboSize = getSize(); - Rectangle displayRect = getMonitor().getClientArea(); - int width = Math.max(comboSize.x, tableRect.width + 2); - int height = tableRect.height + 2; - int x = parentRect.x; - int y = parentRect.y + comboSize.y; - if (y + height > displayRect.y + displayRect.height) { - y = parentRect.y - height; - } - popup.setBounds(x, y, width, height); - popup.setVisible(true); - - if (table.getItemCount() > visibleItemCount) { - table.getColumns()[0].setWidth(text.getSize().x - 2); - } else { - table.getColumns()[0].setWidth(table.getClientArea().width); - } - table.setFocus(); - } - - /* - * Return the Label immediately preceding the receiver in the z-order, or - * null if none. - */ - Label getAssociatedLabel() { - Control[] siblings = getParent().getChildren(); - for (int i = 0; i < siblings.length; i++) { - if (siblings[i] == StyleCombo.this) { - if (i > 0 && siblings[i - 1] instanceof Label) { - return (Label) siblings[i - 1]; - } - } - } - return null; - } - - public Control[] getChildren() { - checkWidget(); - return new Control[0]; - } - - /** - * Gets the editable state. - * - * @return whether or not the reciever is editable - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @since 3.0 - */ - public boolean getEditable() { - checkWidget(); - return text.getEditable(); - } - - /** - * Returns the item at the given, zero-relative index in the receiver's - * list. Throws an exception if the index is out of range. - * - * @param index - * the index of the item to return - * @return the item at the given index - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_INVALID_RANGE - if the index is not between 0 - * and the number of elements in the list minus 1 (inclusive)</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public String getItem(int index) { - checkWidget(); - return table.getItem(index).getText(0); - } - - /** - * Returns the number of items contained in the receiver's list. - * - * @return the number of items - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int getItemCount() { - checkWidget(); - return table.getItemCount(); - } - - /** - * Returns the height of the area which would be used to display - * <em>one</em> of the items in the receiver's list. - * - * @return the height of one item - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int getItemHeight() { - checkWidget(); - return table.getItemHeight(); - } - - /** - * Returns an array of <code>String</code>s which are the items in the - * receiver's list. - * <p> - * Note: This is not the actual structure used by the receiver to maintain - * its list of items, so modifying the array will not affect the receiver. - * </p> - * - * @return the items in the receiver's list - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public String[] getItems() { - checkWidget(); - return getTableItems(); - } - - char getMnemonic(String string) { - int index = 0; - int length = string.length(); - do { - while ((index < length) && (string.charAt(index) != '&')) { - index++; - } - if (++index >= length) { - return '\0'; - } - if (string.charAt(index) != '&') { - return string.charAt(index); - } - index++; - } while (index < length); - return '\0'; - } - - /** - * Returns a <code>Point</code> whose x coordinate is the start of the - * selection in the receiver's text field, and whose y coordinate is the end - * of the selection. The returned values are zero-relative. An "empty" - * selection as indicated by the the x and y coordinates having the same - * value. - * - * @return a point representing the selection start and end - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public Point getSelection() { - checkWidget(); - return text.getSelection(); - } - - /** - * Returns the zero-relative index of the item which is currently selected - * in the receiver's list, or -1 if no item is selected. - * - * @return the index of the selected item - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int getSelectionIndex() { - checkWidget(); - return table.getSelectionIndex(); - } - - public int getStyle() { - int style = super.getStyle(); - style &= ~SWT.READ_ONLY; - if (!text.getEditable()) { - style |= SWT.READ_ONLY; - } - return style; - } - - /** - * Returns a string containing a copy of the contents of the receiver's text - * field. - * - * @return the receiver's text - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public String getText() { - checkWidget(); - return text.getText(); - } - - /** - * Returns the height of the receivers's text field. - * - * @return the text height - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int getTextHeight() { - checkWidget(); - return text.getLineHeight(); - } - - /** - * Returns the maximum number of characters that the receiver's text field - * is capable of holding. If this has not been changed by - * <code>setTextLimit()</code>, it will be the constant - * <code>Combo.LIMIT</code>. - * - * @return the text limit - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int getTextLimit() { - checkWidget(); - return text.getTextLimit(); - } - - /** - * Gets the number of items that are visible in the drop down portion of the - * receiver's list. - * - * @return the number of items that are visible - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @since 3.0 - */ - public int getVisibleItemCount() { - checkWidget(); - return visibleItemCount; - } - - void handleFocus(int type) { - if (isDisposed()) { - return; - } - switch (type) { - case SWT.FocusIn: { - if (hasFocus) { - return; - } - if (getEditable()) { - text.selectAll(); - } - hasFocus = true; - Shell shell = getShell(); - shell.removeListener(SWT.Deactivate, listener); - shell.addListener(SWT.Deactivate, listener); - Display display = getDisplay(); - display.removeFilter(SWT.FocusIn, filter); - display.addFilter(SWT.FocusIn, filter); - Event e = new Event(); - notifyListeners(SWT.FocusIn, e); - break; - } - case SWT.FocusOut: { - if (!hasFocus) { - return; - } - Control focusControl = getDisplay().getFocusControl(); - if (focusControl == arrow || focusControl == table - || focusControl == text) { - return; - } - hasFocus = false; - Shell shell = getShell(); - shell.removeListener(SWT.Deactivate, listener); - Display display = getDisplay(); - display.removeFilter(SWT.FocusIn, filter); - Event e = new Event(); - notifyListeners(SWT.FocusOut, e); - break; - } - } - } - - /** - * Searches the receiver's list starting at the first item (index 0) until - * an item is found that is equal to the argument, and returns the index of - * that item. If no item is found, returns -1. - * - * @param string - * the search item - * @return the index of the item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int indexOf(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - return Arrays.asList(getTableItems()).indexOf(string); - } - - /** - * Searches the receiver's list starting at the given, zero-relative index - * until an item is found that is equal to the argument, and returns the - * index of that item. If no item is found or the starting index is out of - * range, returns -1. - * - * @param string - * the search item - * @param start - * the zero-relative index at which to begin the search - * @return the index of the item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public int indexOf(String string, int start) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - String[] items = getTableItems(); - for (int i = start; i < items.length; i++) { - if (items[i].equals(string)) { - return i; - } - } - return -1; - } - - void initAccessible() { - AccessibleAdapter accessibleAdapter = new AccessibleAdapter() { - public void getName(AccessibleEvent e) { - String name = null; - Label label = getAssociatedLabel(); - if (label != null) { - name = stripMnemonic(label.getText()); - } - e.result = name; - } - - public void getKeyboardShortcut(AccessibleEvent e) { - String shortcut = null; - Label label = getAssociatedLabel(); - if (label != null) { - String text1 = label.getText(); - if (text1 != null) { - char mnemonic = getMnemonic(text1); - if (mnemonic != '\0') { - shortcut = "Alt+" + mnemonic; //$NON-NLS-1$ - } - } - } - e.result = shortcut; - } - - public void getHelp(AccessibleEvent e) { - e.result = getToolTipText(); - } - }; - getAccessible().addAccessibleListener(accessibleAdapter); - text.getAccessible().addAccessibleListener(accessibleAdapter); - table.getAccessible().addAccessibleListener(accessibleAdapter); - - arrow.getAccessible().addAccessibleListener(new AccessibleAdapter() { - public void getName(AccessibleEvent e) { - e.result = isDropped() ? SWT.getMessage("SWT_Close") : SWT.getMessage("SWT_Open"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - public void getKeyboardShortcut(AccessibleEvent e) { - e.result = "Alt+Down Arrow"; //$NON-NLS-1$ - } - - public void getHelp(AccessibleEvent e) { - e.result = getToolTipText(); - } - }); - - getAccessible().addAccessibleTextListener(new AccessibleTextAdapter() { - public void getCaretOffset(AccessibleTextEvent e) { - e.offset = text.getCaretPosition(); - } - }); - - getAccessible().addAccessibleControlListener( - new AccessibleControlAdapter() { - public void getChildAtPoint(AccessibleControlEvent e) { - Point testPoint = toControl(e.x, e.y); - if (getBounds().contains(testPoint)) { - e.childID = ACC.CHILDID_SELF; - } - } - - public void getLocation(AccessibleControlEvent e) { - Rectangle location = getBounds(); - Point pt = toDisplay(location.x, location.y); - e.x = pt.x; - e.y = pt.y; - e.width = location.width; - e.height = location.height; - } - - public void getChildCount(AccessibleControlEvent e) { - e.detail = 0; - } - - public void getRole(AccessibleControlEvent e) { - e.detail = ACC.ROLE_COMBOBOX; - } - - public void getState(AccessibleControlEvent e) { - e.detail = ACC.STATE_NORMAL; - } - - public void getValue(AccessibleControlEvent e) { - e.result = getText(); - } - }); - - text.getAccessible().addAccessibleControlListener( - new AccessibleControlAdapter() { - public void getRole(AccessibleControlEvent e) { - e.detail = text.getEditable() ? ACC.ROLE_TEXT - : ACC.ROLE_LABEL; - } - }); - - arrow.getAccessible().addAccessibleControlListener( - new AccessibleControlAdapter() { - public void getDefaultAction(AccessibleControlEvent e) { - e.result = isDropped() ? SWT.getMessage("SWT_Close") : SWT.getMessage("SWT_Open"); //$NON-NLS-1$ //$NON-NLS-2$ - } - }); - } - - boolean isDropped() { - return popup.getVisible(); - } - - public boolean isFocusControl() { - checkWidget(); - if (text.isFocusControl() || arrow.isFocusControl() - || table.isFocusControl() || popup.isFocusControl()) { - return true; - } - return super.isFocusControl(); - } - - void internalLayout(boolean changed) { - if (isDropped()) { - dropDown(false); - } - Rectangle rect = getClientArea(); - int width = rect.width; - int height = rect.height; - Point arrowSize = arrow.computeSize(SWT.DEFAULT, height, changed); - text.setBounds(0, 0, width - arrowSize.x, height); - arrow.setBounds(width - arrowSize.x, 0, arrowSize.x, arrowSize.y); - } - - void tableEvent(Event event) { - switch (event.type) { - case SWT.Dispose: - if (getShell() != popup.getParent()) { - String[] items = getTableItems(); - int selectionIndex = table.getSelectionIndex(); - popup = null; - table = null; - createPopup(items, selectionIndex); - } - break; - case SWT.FocusIn: { - handleFocus(SWT.FocusIn); - break; - } - case SWT.MouseUp: { - if (event.button != 1) { - return; - } - dropDown(false); - break; - } - case SWT.Selection: { - int index = table.getSelectionIndex(); - if (index == -1) - return; - text.setText(table.getItem(index).getText()); - text.selectAll(); - table.setSelection(index); - Event e = new Event(); - e.time = event.time; - e.stateMask = event.stateMask; - e.doit = event.doit; - notifyListeners(SWT.Selection, e); - event.doit = e.doit; - break; - } - case SWT.Traverse: { - switch (event.detail) { - case SWT.TRAVERSE_RETURN: - case SWT.TRAVERSE_ESCAPE: - case SWT.TRAVERSE_ARROW_PREVIOUS: - case SWT.TRAVERSE_ARROW_NEXT: - event.doit = false; - break; - } - Event e = new Event(); - e.time = event.time; - e.detail = event.detail; - e.doit = event.doit; - e.character = event.character; - e.keyCode = event.keyCode; - notifyListeners(SWT.Traverse, e); - event.doit = e.doit; - event.detail = e.detail; - break; - } - case SWT.KeyUp: { - Event e = new Event(); - e.time = event.time; - e.character = event.character; - e.keyCode = event.keyCode; - e.stateMask = event.stateMask; - notifyListeners(SWT.KeyUp, e); - break; - } - case SWT.KeyDown: { - if (event.character == SWT.ESC) { - // Escape key cancels popup list - dropDown(false); - } - if ((event.stateMask & SWT.ALT) != 0 - && (event.keyCode == SWT.ARROW_UP || event.keyCode == SWT.ARROW_DOWN)) { - dropDown(false); - } - if (event.character == SWT.CR) { - // Enter causes default selection - dropDown(false); - Event e = new Event(); - e.time = event.time; - e.stateMask = event.stateMask; - notifyListeners(SWT.DefaultSelection, e); - } - // At this point the widget may have been disposed. - // If so, do not continue. - if (isDisposed()) { - break; - } - Event e = new Event(); - e.time = event.time; - e.character = event.character; - e.keyCode = event.keyCode; - e.stateMask = event.stateMask; - notifyListeners(SWT.KeyDown, e); - break; - - } - } - } - - void popupEvent(Event event) { - switch (event.type) { - case SWT.Paint: - // draw black rectangle around list - Rectangle listRect = table.getBounds(); - Color black = getDisplay().getSystemColor(SWT.COLOR_BLACK); - event.gc.setForeground(black); - event.gc.drawRectangle(0, 0, listRect.width + 1, - listRect.height + 1); - break; - case SWT.Close: - event.doit = false; - dropDown(false); - break; - case SWT.Deactivate: - dropDown(false); - break; - } - } - - public void redraw() { - super.redraw(); - text.redraw(); - arrow.redraw(); - if (popup.isVisible()) { - table.redraw(); - } - } - - public void redraw(int x, int y, int width, int height, boolean all) { - super.redraw(x, y, width, height, true); - } - - /** - * Removes the item from the receiver's list at the given zero-relative - * index. - * - * @param index - * the index for the item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_INVALID_RANGE - if the index is not between 0 - * and the number of elements in the list minus 1 (inclusive)</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void remove(int index) { - checkWidget(); - table.remove(index); - } - - /** - * Removes the items from the receiver's list which are between the given - * zero-relative start and end indices (inclusive). - * - * @param start - * the start of the range - * @param end - * the end of the range - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_INVALID_RANGE - if either the start or end are - * not between 0 and the number of elements in the list minus - * 1 (inclusive)</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void remove(int start, int end) { - checkWidget(); - table.remove(start, end); - } - - /** - * Searches the receiver's list starting at the first item until an item is - * found that is equal to the argument, and removes that item from the list. - * - * @param string - * the item to remove - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * <li>ERROR_INVALID_ARGUMENT - if the string is not found - * in the list</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void remove(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - int index = Arrays.asList(getTableItems()).indexOf(string); - table.remove(index); - } - - /** - * Removes all of the items from the receiver's list and clear the contents - * of receiver's text field. - * <p> - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void removeAll() { - checkWidget(); - text.setText(""); //$NON-NLS-1$ - table.removeAll(); - } - - /** - * Removes the listener from the collection of listeners who will be - * notified when the receiver's text is modified. - * - * @param listener1 - * the listener which should no longer be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see ModifyListener - * @see #addModifyListener - */ - public void removeModifyListener(ModifyListener listener1) { - checkWidget(); - if (listener1 == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Modify, listener1); - } - - /** - * Removes the listener from the collection of listeners who will be - * notified when the receiver's selection changes. - * - * @param listener1 - * the listener which should no longer be notified - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @see SelectionListener - * @see #addSelectionListener - */ - public void removeSelectionListener(SelectionListener listener1) { - checkWidget(); - if (listener1 == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - removeListener(SWT.Selection, listener1); - removeListener(SWT.DefaultSelection, listener1); - } - - /** - * Selects the item at the given zero-relative index in the receiver's list. - * If the item at the index was already selected, it remains selected. - * Indices that are out of range are ignored. - * - * @param index - * the index of the item to select - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void select(int index) { - checkWidget(); - if (index == -1) { - table.deselectAll(); - text.setText(""); //$NON-NLS-1$ - return; - } - if (0 <= index && index < table.getItemCount()) { - if (index != getSelectionIndex()) { - text.setText(table.getItem(index).getText()); - text.selectAll(); - table.select(index); - table.showSelection(); - } - } - } - - public void setBackground(Color color) { - super.setBackground(color); - background = color; - if (text != null) { - text.setBackground(color); - } - if (table != null) { - table.setBackground(color); - } - if (arrow != null) { - arrow.setBackground(color); - } - } - - /** - * Sets the editable state. - * - * @param editable - * the new editable state - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @since 3.0 - */ - public void setEditable(boolean editable) { - checkWidget(); - text.setEditable(editable); - } - - public void setEnabled(boolean enabled) { - super.setEnabled(enabled); - if (popup != null) { - popup.setVisible(false); - } - if (text != null) { - text.setEnabled(enabled); - } - if (arrow != null) { - arrow.setEnabled(enabled); - } - } - - public boolean setFocus() { - checkWidget(); - return text.setFocus(); - } - - public void setFont(Font font) { - super.setFont(font); - this.font = font; - text.setFont(font); - table.setFont(font); - internalLayout(true); - } - - public void setForeground(Color color) { - super.setForeground(color); - foreground = color; - if (text != null) { - text.setForeground(color); - } - if (table != null) { - table.setForeground(color); - } - if (arrow != null) { - arrow.setForeground(color); - } - } - - /** - * Sets the text of the item in the receiver's list at the given - * zero-relative index to the string argument. This is equivalent to - * <code>remove</code>'ing the old item at the index, and then - * <code>add</code>'ing the new item at that index. - * - * @param index - * the index for the item - * @param string - * the new text for the item - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_INVALID_RANGE - if the index is not between 0 - * and the number of elements in the list minus 1 (inclusive)</li> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setItem(int index, String string) { - checkWidget(); - table.getItem(index).setText(0, string); - } - - /** - * Sets the receiver's list to be the given array of items. - * - * @param items - * the array of items - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the items array is null</li> - * <li>ERROR_INVALID_ARGUMENT - if an item in the items - * array is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setItems(String[] items) { - checkWidget(); - if (items == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - - for (int i = 0; i < items.length; i++) { - TableItem item = new TableItem(table, SWT.NONE); - if (items[i].equals(defaultValue)) { - item.setFont(JFaceResources.getFontRegistry().getBold( - JFaceResources.DEFAULT_FONT)); - } - item.setText(0, items[i]); - } - } - - /** - * Sets the layout which is associated with the receiver to be the argument - * which may be null. - * <p> - * Note : No Layout can be set on this Control because it already manages - * the size and position of its children. - * </p> - * - * @param layout - * the receiver's new layout or null - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setLayout(Layout layout) { - checkWidget(); - return; - } - - /** - * Sets the selection in the receiver's text field to the range specified by - * the argument whose x coordinate is the start of the selection and whose y - * coordinate is the end of the selection. - * - * @param selection - * a point representing the new selection start and end - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the point is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setSelection(Point selection) { - checkWidget(); - if (selection == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - text.setSelection(selection.x, selection.y); - } - - /** - * Sets the contents of the receiver's text field to the given string. - * <p> - * Note: The text field in a <code>Combo</code> is typically only capable - * of displaying a single line of text. Thus, setting the text to a string - * containing line breaks or other special characters will probably cause it - * to display incorrectly. - * </p> - * - * @param string - * the new text - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_NULL_ARGUMENT - if the string is null</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setText(String string) { - checkWidget(); - if (string == null) { - SWT.error(SWT.ERROR_NULL_ARGUMENT); - } - int index = Arrays.asList(getTableItems()).indexOf(string); - if (index == -1) { - table.deselectAll(); - text.setText(string); - return; - } - text.setText(string); - text.selectAll(); - table.setSelection(index); - table.showSelection(); - } - - /** - * Sets the maximum number of characters that the receiver's text field is - * capable of holding to be the argument. - * - * @param limit - * new text limit - * - * @exception IllegalArgumentException - * <ul> - * <li>ERROR_CANNOT_BE_ZERO - if the limit is zero</li> - * </ul> - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - */ - public void setTextLimit(int limit) { - checkWidget(); - text.setTextLimit(limit); - } - - public void setToolTipText(String string) { - checkWidget(); - super.setToolTipText(string); - arrow.setToolTipText(string); - text.setToolTipText(string); - } - - public void setVisible(boolean visible) { - super.setVisible(visible); - if (!visible) { - popup.setVisible(false); - } - } - - /** - * Sets the number of items that are visible in the drop down portion of the - * receiver's list. - * - * @param count - * the new number of items to be visible - * - * @exception org.eclipse.swt.SWTException - * <ul> - * <li>ERROR_WIDGET_DISPOSED - if the receiver has been - * disposed</li> - * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the - * thread that created the receiver</li> - * </ul> - * - * @since 3.0 - */ - public void setVisibleItemCount(int count) { - checkWidget(); - if (count < 0) { - return; - } - visibleItemCount = count; - } - - String stripMnemonic(String string) { - int index = 0; - int length = string.length(); - do { - while ((index < length) && (string.charAt(index) != '&')) { - index++; - } - if (++index >= length) { - return string; - } - if (string.charAt(index) != '&') { - return string.substring(0, index - 1) - + string.substring(index, length); - } - index++; - } while (index < length); - return string; - } - - void textEvent(Event event) { - switch (event.type) { - case SWT.FocusIn: { - handleFocus(SWT.FocusIn); - break; - } - case SWT.KeyDown: { - if (event.character == SWT.CR) { - dropDown(false); - Event e = new Event(); - e.time = event.time; - e.stateMask = event.stateMask; - notifyListeners(SWT.DefaultSelection, e); - } - // At this point the widget may have been disposed. - // If so, do not continue. - if (isDisposed()) { - break; - } - - if (event.keyCode == SWT.ARROW_UP - || event.keyCode == SWT.ARROW_DOWN) { - event.doit = false; - if ((event.stateMask & SWT.ALT) != 0) { - boolean dropped = isDropped(); - text.selectAll(); - if (!dropped) { - setFocus(); - } - dropDown(!dropped); - break; - } - - int oldIndex = getSelectionIndex(); - if (event.keyCode == SWT.ARROW_UP) { - select(Math.max(oldIndex - 1, 0)); - } else { - select(Math.min(oldIndex + 1, getItemCount() - 1)); - } - if (oldIndex != getSelectionIndex()) { - Event e = new Event(); - e.time = event.time; - e.stateMask = event.stateMask; - notifyListeners(SWT.Selection, e); - } - // At this point the widget may have been disposed. - // If so, do not continue. - if (isDisposed()) { - break; - } - } - - // Further work : Need to add support for incremental search in - // pop up list as characters typed in text widget - - Event e = new Event(); - e.time = event.time; - e.character = event.character; - e.keyCode = event.keyCode; - e.stateMask = event.stateMask; - notifyListeners(SWT.KeyDown, e); - break; - } - case SWT.KeyUp: { - Event e = new Event(); - e.time = event.time; - e.character = event.character; - e.keyCode = event.keyCode; - e.stateMask = event.stateMask; - notifyListeners(SWT.KeyUp, e); - break; - } - case SWT.Modify: { - table.deselectAll(); - Event e = new Event(); - e.time = event.time; - notifyListeners(SWT.Modify, e); - break; - } - case SWT.MouseDown: { - if (event.button != 1) { - return; - } - if (text.getEditable()) { - return; - } - boolean dropped = isDropped(); - text.selectAll(); - if (!dropped) { - setFocus(); - } - dropDown(!dropped); - break; - } - case SWT.MouseUp: { - if (event.button != 1) { - return; - } - if (text.getEditable()) { - return; - } - text.selectAll(); - break; - } - case SWT.Traverse: { - switch (event.detail) { - case SWT.TRAVERSE_RETURN: - case SWT.TRAVERSE_ARROW_PREVIOUS: - case SWT.TRAVERSE_ARROW_NEXT: - // The enter causes default selection and - // the arrow keys are used to manipulate the list contents so - // do not use them for traversal. - event.doit = false; - break; - } - - Event e = new Event(); - e.time = event.time; - e.detail = event.detail; - e.doit = event.doit; - e.character = event.character; - e.keyCode = event.keyCode; - notifyListeners(SWT.Traverse, e); - event.doit = e.doit; - event.detail = e.detail; - break; - } - } - } - - /** - * @param defaultValue - */ - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - int index = Arrays.asList(getTableItems()).indexOf(defaultValue); - if (index != -1) { - table.getItem(index).setFont( - JFaceResources.getFontRegistry().getBold( - JFaceResources.DEFAULT_FONT)); - } - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/UTF8Util.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/UTF8Util.java deleted file mode 100644 index 31aac196b..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/UTF8Util.java +++ /dev/null @@ -1,89 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -/** - * TODO: this class doesn't seem to be in use - * @author mengbo - * @version 1.5 - */ -public final class UTF8Util { - private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5', - '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - - /** - * @param s - * @return the unwound string - */ - public static String unwindEscapeChars(String s) { - StringBuffer sb = new StringBuffer(s.length()); - int length = s.length(); - for (int i = 0; i < length; i++) { - char c = s.charAt(i); - sb.append(getUnwoundString(c)); - } - return sb.toString(); - } - - private static String getUnwoundString(char c) { - switch (c) { - case '\b': - return "\\b";//$NON-NLS-1$ - case '\t': - return "\\t";//$NON-NLS-1$ - case '\n': - return "\\n";//$NON-NLS-1$ - case '\f': - return "\\f";//$NON-NLS-1$ - case '\r': - return "\\r";//$NON-NLS-1$ - - // These can be used unescaped in properties file: - case '\"': - return "\\\"";//$NON-NLS-1$ - case '\'': - return "\\\'";//$NON-NLS-1$ - - case '\\': - return "\\\\";//$NON-NLS-1$ - - case '=': - return "\\=";//$NON-NLS-1$ - - // This is only done when writing to the .properties file in - // #unwindValue(String) - // case '!': - // return "\\!";//$NON-NLS-1$ - // case '#': - // return "\\#";//$NON-NLS-1$ - - default: - if (((c < 0x0020) || (c > 0x007e))) { - return new StringBuffer().append('\\').append('u').append( - toHex((c >> 12) & 0xF)).append(toHex((c >> 8) & 0xF)) - .append(toHex((c >> 4) & 0xF)).append(toHex(c & 0xF)) - .toString(); - - } - return String.valueOf(c); - } - } - - private static char toHex(int halfByte) { - return HEX_DIGITS[(halfByte & 0xF)]; - } - - private UTF8Util() - { - // no instantiation - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WebrootUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WebrootUtil.java deleted file mode 100644 index a776bf501..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WebrootUtil.java +++ /dev/null @@ -1,316 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.util.Arrays; -import java.util.Iterator; -import java.util.Set; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.runtime.content.IContentType; -import org.eclipse.core.runtime.content.IContentTypeManager; -import org.eclipse.jst.jsf.common.ui.IFileFolderConstants; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.wst.common.componentcore.ComponentCore; -import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; -import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; -import org.eclipse.wst.common.project.facet.core.IFacetedProject; -import org.eclipse.wst.common.project.facet.core.IProjectFacet; -import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; -import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; - -/** - * Web app utility methods - */ -public class WebrootUtil { - - /** - * get the webpath for the project path. The project path is something like - * "/projectname/webroot/filename.jsp", or "/projectname/webroot/folder". - * The project information should be removed from project path, e.g, - * "/filename.jsp" or "/folder/*"; - * - * @param path - * @return the web path - */ - public static String getWebPath(IPath path) { - String strWebrootPath = ""; //$NON-NLS-1$ - IProject project = WorkspaceUtil.getProjectFor(path); - IPath webContentPath = getWebContentPath(project); - if (webContentPath != null && webContentPath.isPrefixOf(path)) { - int start = path.matchingFirstSegments(webContentPath); - String[] segments = path.segments(); - for (int i = start, n = path.segmentCount(); i < n; i++) { - strWebrootPath = strWebrootPath - + IFileFolderConstants.PATH_SEPARATOR + segments[i]; - } - } - return strWebrootPath; - } - - /** - * To see if a resource is under the webcontent folder. - * - * @param resource - * @return true if resource is within the web content folder hierarchy - */ - public static boolean isUnderWebContentFolder(IResource resource) { - IPath webContentPath = getWebContentPath(resource.getProject()); - if (webContentPath != null) { - return webContentPath.isPrefixOf(resource.getFullPath()); - } - return true; - } - - /** - * @param project - * @return full path to web content folder - */ - public static IPath getWebContentPath(IProject project) { - if (project != null) { - IVirtualComponent component = ComponentCore.createComponent(project); - if (component != null) { - IVirtualFolder rootFolder = component.getRootFolder(); - if (rootFolder != null) { - IContainer underlyingFolder = rootFolder.getUnderlyingFolder(); - if (underlyingFolder != null) { - return underlyingFolder.getFullPath(); - } - } - } - } - return null; - } - - /** - * Return the name of the web content folder. i.e, "WebContent" - * - * @param project - * @return the web content folder name - */ - public static String getWebContentFolderName(IProject project) { - IPath webContentPath = getWebContentPath(project); - if (webContentPath != null) - return webContentPath.lastSegment(); - return null; - } - - /** - * Gets the "web content" folder for the given project - this method should no longer be used - * since it cannot handle the case where the project root is also the "web content" folder - * (use {@link #getWebContentContainer(IProject)} instead). - * @param project The IProject instance for which to get the "web content" folder. - * @return The "web content" folder for the given project. - * @deprecated - * @see #getWebContentContainer(IProject) - */ - public static IFolder getWebContentFolder(IProject project) { - IPath webContentPath = getWebContentPath(project); - IFolder folder = null; - if (webContentPath != null) { - folder = project.getFolder(webContentPath.removeFirstSegments(1)); - } - return folder; - } - - /** - * Gets the primary "web content" container for the given project - this method is considered - * preferable to using {@link #getWebContentFolder(IProject)}, since it correctly handles the - * case where the project root is also the primary "web content" container. - * @param project The IProject instance for which to get the primary "web content" container. - * @return The primary "web content" container for the given project. - * @see #getWebContentContainers(IProject) - */ - public static IContainer getWebContentContainer(IProject project) { - IContainer container = null; - IPath webContentPath = getWebContentPath(project); - if (webContentPath != null) { - if (webContentPath.segmentCount() > 1) { - container = project.getFolder(webContentPath.removeFirstSegments(1)); - } else { - container = project; - } - } - return container; - } - - /** - * Gets all "web content" containers for the given project (there can be multiple mappings to - * the same runtime path). - * @param project The IProject instance for which to get all "web content" containers. - * @return All "web content" containers for the given project, or <code>null</code> if none are - * found. - * @see #getWebContentContainer(IProject) - */ - public static IContainer[] getWebContentContainers(IProject project) { - IContainer[] containers = null; - if (project != null) { - IVirtualComponent component = ComponentCore.createComponent(project); - if (component != null) { - IVirtualFolder rootFolder = component.getRootFolder(); - if (rootFolder != null) { - containers = rootFolder.getUnderlyingFolders(); - } - } - } - return containers; - } - - /** - * return the depth of webcontent folder. For example, if the webcontent - * folder path is /projectname/webContent, then return 2, if it's - * /projectname/a/webContent, then return 3. - * - * @param project - * @return the depth of webcontent folder - */ - public static int getWebContentFolderDepth(IProject project) { - if (project != null) { - IPath webContentPath = getWebContentPath(project); - if (webContentPath != null) { - return webContentPath.segmentCount(); - } - } - // default to 2 - return 2; - } - - /** - * determine the path of web file is valid or not - * - * @param path - - * the path of web file - * @return - true - valid web file - */ - public static boolean isValidWebFile(IPath path) { - String[] jspExtensions = getJSPFileExtensions(); - - String extension = path.getFileExtension(); - if (extension != null - && Arrays.asList(jspExtensions).contains(extension)) - { - return true; - } - - return false; - } - - /** - * get the webpath for the project path. The project path is something like - * "/projectname/webroot/filename.jsp", or "/projectname/webroot/folder". - * The project information should be removed from project path, e.g, - * "/filename.jsp" or "/folder/*"; - * - * @param strPath - - * the project path - * @return - web path remove from "/projectname/webroot" - * @deprecated use getWebPath(IPath path) instead. - */ - public static String getWebPath(String strPath) { - String strWebrootPath = ""; //$NON-NLS-1$ - if (strPath != null) { - IPath path = new Path(strPath); - return getWebPath(path); - } - return strWebrootPath; - } - - /** - * @param strWebPath - * @return the page name - */ - public static String getPageNameFromWebPath(String strWebPath) { - String pageName = strWebPath; - - if (pageName.startsWith(IFileFolderConstants.PATH_SEPARATOR)) { - pageName = pageName.substring(1); - } - - String[] jspExtensions = getJSPFileExtensions(); - for (int i = 0, n = jspExtensions.length; i < n; i++) { - String extension = IFileFolderConstants.DOT + jspExtensions[i]; - if (pageName.endsWith(extension)) { - pageName = pageName.substring(0, pageName.length() - - extension.length()); - break; - } - } - - return pageName; - } - /** - * Get the JSP file extension from Eclipse preference - * Windows->Preferences->General->Content Types - * - * @return String Array for JSP file extensions - */ - public static String[] getJSPFileExtensions() { - IContentTypeManager typeManager = Platform.getContentTypeManager(); - IContentType jspContentType = typeManager - .getContentType("org.eclipse.jst.jsp.core.jspsource"); //$NON-NLS-1$ - if (jspContentType != null) { - return jspContentType - .getFileSpecs(IContentType.FILE_EXTENSION_SPEC); - } - return null; - } - - /** - * Tests if the passed IProject instance is a valid JSF project in the - * following ways: - * <ul> - * <li>project is not null and is accessible, </li> - * <li>project has the "jst.web" facet set on it.</li> - * </ul> - * - * @param project - * IProject instance to be tested. - * @return true if the IProject instance is a valid JSF project, else false. - */ - public static boolean isValidWebProject(IProject project) { - boolean isValid = false; - // check for null or inaccessible project - if (project != null && project.isAccessible()) { - // TODO: this was jst.jsf before, but we are checking for jst.web - // the javadoc seems out of sync with the method name - // check for "jst.web" facet on project - try { - IFacetedProject facetedProject = ProjectFacetsManager - .create(project); - if (facetedProject != null) { - Set projectFacets = facetedProject.getProjectFacets(); - Iterator itProjectFacets = projectFacets.iterator(); - while (itProjectFacets.hasNext()) { - IProjectFacetVersion projectFacetVersion = (IProjectFacetVersion) itProjectFacets - .next(); - IProjectFacet projectFacet = projectFacetVersion - .getProjectFacet(); - if ("jst.web".equals(projectFacet.getId())) { //$NON-NLS-1$ - isValid = true; - break; - } - } - } - } catch (CoreException ce) { - JSFUICommonPlugin.getLogger(WebrootUtil.class).error("checking web project", ce); //$NON-NLS-1$ - } - } - return isValid; - } -} diff --git a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WorkspaceUtil.java b/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WorkspaceUtil.java deleted file mode 100644 index 6c5dcba5d..000000000 --- a/jsf/plugins/org.eclipse.jst.jsf.common.ui/src/org/eclipse/jst/jsf/common/ui/internal/utils/WorkspaceUtil.java +++ /dev/null @@ -1,283 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006 Sybase, Inc. 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: - * Sybase, Inc. - initial API and implementation - *******************************************************************************/ -package org.eclipse.jst.jsf.common.ui.internal.utils; - -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.InputStream; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.jst.jsf.common.ui.IFileFolderConstants; -import org.eclipse.jst.jsf.common.ui.JSFUICommonPlugin; -import org.eclipse.jst.jsf.common.ui.internal.logging.Logger; - -/** - * TODO: This class should be abstract to common utility. - * - * This class implements management of resource in a workspace. - */ -public final class WorkspaceUtil { - /** log instance */ - private static final Logger log = JSFUICommonPlugin - .getLogger(WorkspaceUtil.class); - - private WorkspaceUtil() { - // no external instantiation - } - - /** - * Create the given file in the workspace resource info tree. - * @param resource - * @param contents - */ - public static void ensureExistsInWorkspace(final IFile resource, - final InputStream contents) { - if (resource == null) { - return; - } - IWorkspaceRunnable body = new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) throws CoreException { - if (resource.exists()) { - resource.setContents(contents, true, false, null); - } else { - ensureExistsInWorkspace(resource.getParent(), true); - resource.create(contents, true, null); - } - } - }; - try { - ResourcesPlugin.getWorkspace().run(body, null); - } catch (CoreException e) { - // Test.EclipseWorkspaceTest.Error.FileCreationInWorkspace = Fail in - // creating file:{0} in the workspace resource info tree. - log - .error( - "Test.EclipseWorkspaceTest.Error.FileCreationInWorkspace", resource.getName(), e);//$NON-NLS-1$ - } - } - - /** - * Create the given file in the workspace resource info tree. - * @param resource - * @param contents - */ - public static void ensureExistsInWorkspace(IFile resource, String contents) { - // FIXME: We'll need some way for handing file encoding. - ensureExistsInWorkspace(resource, new ByteArrayInputStream(contents - .getBytes())); - } - - /** - * Create the given resource in the workspace resource info tree. - * @param resource - * @param local - */ - public static void ensureExistsInWorkspace(final IResource resource, - final boolean local) { - IWorkspaceRunnable body = new IWorkspaceRunnable() { - public void run(IProgressMonitor monitor) throws CoreException { - create(resource, local); - } - }; - try { - ResourcesPlugin.getWorkspace().run(body, null); - } catch (CoreException e) { - // Test.EclipseWorkspaceTest.Error.ResourceCreationInWorkspace = - // Fail in creating resource:{0} in the workspace resource info - // tree. - log - .error( - "Test.EclipseWorkspaceTest.Error.ResourceCreationInWorkspace", resource.getName(), e);//$NON-NLS-1$ - } - } - - /** - * crate the resource if the resource is not existed, create a new one. - * - * @param resource - - * resource instance - * @param local - - * a flag controlling whether or not the folder will be local - * after the creation - * @throws CoreException - */ - protected static void create(final IResource resource, boolean local) - throws CoreException { - if (resource == null || resource.exists()) { - return; - } - if (!resource.getParent().exists()) { - create(resource.getParent(), local); - } - switch (resource.getType()) { - case IResource.FILE: - ((IFile) resource).create(local ? new ByteArrayInputStream( - new byte[0]) : null, true, getMonitor()); - break; - case IResource.FOLDER: - ((IFolder) resource).create(true, local, getMonitor()); - break; - case IResource.PROJECT: - ((IProject) resource).create(getMonitor()); - ((IProject) resource).open(getMonitor()); - break; - } - } - - /** - * create and return a NullProgressMonitor - * - * @return - NullProgressMonitor - */ - public static IProgressMonitor getMonitor() { - return new NullProgressMonitor(); - } - - /** - * Get the project reference for a given path - * - * @param path - - * the path - * @return IProject - the project reference - */ - public static IProject getProjectFor(IPath path) { - String[] segs = path.segments(); - String projectPath = new String(); - IProject[] projects = ResourcesPlugin.getWorkspace().getRoot() - .getProjects(); - IProject project = null; - for (int p = 0; p < projects.length; p++) { - if (projects[p].isOpen()) { - for (int s = 0; s < segs.length; s++) { - if (segs[s].equalsIgnoreCase(projects[p].getName())) { - // Once we have a match on the project name, then - // the remainder of the segments equals the project path - for (int s2 = s + 1; s2 < segs.length; s2++) { - projectPath = projectPath - + IFileFolderConstants.PATH_SEPARATOR - + segs[s2]; - } - project = projects[p]; - break; - } - } - } - } - if (project == null) { - return null; - } - - // TODO: still don't understand why this refreshLocal is necessary - // for now, going to only allow it if this method is called - // when the tree isn't locked. This shouldn't cause a regression, since - // when the call fails currently things keep on going due to the catch - if (!project.getWorkspace().isTreeLocked()) - { - try { - project.refreshLocal(IResource.DEPTH_INFINITE, null); - } catch (CoreException e) { - // TODO C.B.:pushing this down to a warning because it creates really - // spurious output. Don't know why we are calling refreshLocal at all. - JSFUICommonPlugin.getLogger(WorkspaceUtil.class).info("Error.RefreshingLocal", e); //$NON-NLS-1$ - } - } - - IResource res = project.findMember(new Path(projectPath)); - if ((res != null) && (res.exists())) { - return project; - } - return null; - } - - /** - * Get the project reference for a given file - * - * @param file - - * the IFile file reference - * @return IProject - the project reference - */ - public static IProject getProjectFor(IFile file) { - IPath testPath = new Path(file.getFullPath().toOSString()); - return getProjectFor(testPath); - } - - /** - * Get the project reference for a given file - * - * @param file - - * the File file reference - * @return IProject - the project reference - */ - public static IProject getProjectFor(File file) { - IPath testPath = new Path(file.getAbsolutePath()); - return getProjectFor(testPath); - } - - /** - * Get the project-relative resource reference for a given path - * - * @param path - - * the path - * @return IResource - the project-relative resource - */ - public static IResource getProjectRelativeResource(IPath path) { - String[] segs = path.segments(); - String projectPath = new String(); - IProject[] projects = ResourcesPlugin.getWorkspace().getRoot() - .getProjects(); - IProject project = null; - for (int p = 0; p < projects.length; p++) { - if (projects[p].isOpen()) { - for (int s = 0; s < segs.length; s++) { - if (segs[s].equalsIgnoreCase(projects[p].getName())) { - // Once we have a match on the project name, then - // the remainder of the segments equals the project path - for (int s2 = s + 1; s2 < segs.length; s2++) { - projectPath = projectPath - + IFileFolderConstants.PATH_SEPARATOR - + segs[s2]; - } - project = projects[p]; - break; - } - } - } - } - if (project == null) { - return null; - } - - return project.getFile(projectPath); - } - - /** - * Get the project-relative resource reference for a given file - * - * @param file - - * the File file reference - * @return IResource - the project-relative resource - */ - public static IResource getProjectRelativeResource(File file) { - IPath testPath = new Path(file.getAbsolutePath()); - return getProjectRelativeResource(testPath); - } -} |