diff --git a/rse/plugins/org.eclipse.rse.core/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.core/META-INF/MANIFEST.MF
index a84f01e6838..2dfa21ecdc7 100644
--- a/rse/plugins/org.eclipse.rse.core/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.rse.core/META-INF/MANIFEST.MF
@@ -7,7 +7,6 @@ Bundle-Activator: org.eclipse.rse.core.RSECorePlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
- org.eclipse.rse.logging,
org.eclipse.rse.services
Eclipse-LazyStart: true
Export-Package: org.eclipse.rse.core,
@@ -18,9 +17,11 @@ Export-Package: org.eclipse.rse.core,
org.eclipse.rse.internal.core;x-internal:=true,
org.eclipse.rse.internal.core.filters;x-internal:=true,
org.eclipse.rse.internal.core.subsystems;x-internal:=true,
+ org.eclipse.rse.internal.logging,
org.eclipse.rse.internal.persistence;x-internal:=true,
org.eclipse.rse.internal.persistence.dom;x-internal:=true,
org.eclipse.rse.internal.references;x-internal:=true,
+ org.eclipse.rse.logging,
org.eclipse.rse.persistence,
org.eclipse.rse.persistence.dom
Bundle-Vendor: %providerName
diff --git a/rse/plugins/org.eclipse.rse.core/plugin.xml b/rse/plugins/org.eclipse.rse.core/plugin.xml
index 73ab6bd1519..b60e6bed838 100644
--- a/rse/plugins/org.eclipse.rse.core/plugin.xml
+++ b/rse/plugins/org.eclipse.rse.core/plugin.xml
@@ -32,6 +32,7 @@
+
diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LogListener.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LogListener.java
new file mode 100644
index 00000000000..f9ab21e4d52
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LogListener.java
@@ -0,0 +1,139 @@
+/********************************************************************************
+ * Copyright (c) 2002, 2006 IBM Corporation. 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
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * {Name} (company) - description of contribution.
+ ********************************************************************************/
+
+package org.eclipse.rse.internal.logging;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.Date;
+
+import org.eclipse.core.runtime.ILogListener;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+
+/**
+ * Log Listener is a sink for messages coming from Logger.
+ */
+public class LogListener implements ILogListener, IPropertyChangeListener {
+
+ private PrintWriter log = null;
+ private File outputFile = null;
+
+ /**
+ * Create a new log listener for a plugin.
+ * @param plugin The plugin for which to create a log listener.
+ */
+ public LogListener(Plugin plugin) {
+ IPath path = plugin.getStateLocation().addTrailingSeparator().append(".log"); //$NON-NLS-1$
+ outputFile = path.toFile();
+ if ((outputFile != null) && (outputFile.exists())) {
+ outputFile.delete();
+ }
+ initialize();
+ }
+
+ /**
+ * Initialize the logger. Retrieves the logging location preference and sets up the logger
+ * to log to that location.
+ */
+ private void initialize() {
+ try {
+ freeResources();
+ log = new PrintWriter(new BufferedWriter(new FileWriter(outputFile.toString(), true)), true);
+ } catch (Exception e) {
+ log = null;
+ System.err.println("Exception in RemoteSystemLogListener.initialize(): " + e.getMessage()); //$NON-NLS-1$
+ e.printStackTrace();
+ }
+ }
+
+ public void logging(IStatus status) {
+ if (log == null)
+ return;
+ else {
+ // Need a to string here, because we need to be able to compare dates.
+ String date = new Date().toString();
+ log.println(date);
+ int severity = status.getSeverity();
+ if (severity == IStatus.ERROR) {
+ log.print("ERROR"); //$NON-NLS-1$
+ } else if (severity == IStatus.WARNING) {
+ log.print("WARNING"); //$NON-NLS-1$
+ } else if (severity == IStatus.INFO) {
+ log.print("INFO"); //$NON-NLS-1$
+ } else if (severity == IStatus.OK) {
+ log.print("DEBUG"); //$NON-NLS-1$
+ }
+
+ log.print(" "); //$NON-NLS-1$
+ log.print(status.getPlugin());
+ log.print(" "); //$NON-NLS-1$
+ log.println(status.getMessage());
+ if (status.getException() != null) status.getException().printStackTrace(log);
+ if (status.isMultiStatus()) {
+ IStatus[] children = status.getChildren();
+ for (int i = 0; i < children.length; i++) {
+ loggingChild(children[i]);
+ }
+ }
+ log.println("--------------------------------------------"); //$NON-NLS-1$
+ }
+
+ }
+
+ public void logging(IStatus status, String plugin) {
+ logging(status);
+ }
+
+ /**
+ * @param tmp org.eclipse.core.runtime.IStatus
+ */
+ private void loggingChild(IStatus status) {
+ if (log == null)
+ return;
+ else {
+ log.print("\t\t"); //$NON-NLS-1$
+ log.println(status.getMessage());
+ if (status.getException() != null) status.getException().printStackTrace(log);
+ if (status.isMultiStatus()) {
+ IStatus[] children = status.getChildren();
+ for (int i = 0; i < children.length; i++)
+ logging(children[i]);
+ }
+ }
+ }
+
+ /**
+ * Handle changes from Preferences page.
+ */
+ public synchronized void propertyChange(PropertyChangeEvent event) {
+ // refresh the log location from plugin Preference store
+ initialize();
+ }
+
+ public void freeResources() {
+ if (log == null) return;
+ log.flush();
+ log.close();
+ log = null;
+
+ }
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java
new file mode 100644
index 00000000000..216d7053d7f
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/internal/logging/LoggingPreferenceInitializer.java
@@ -0,0 +1,43 @@
+/********************************************************************************
+ * Copyright (c) 2006 IBM Corporation. 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
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * {Name} (company) - description of contribution.
+ ********************************************************************************/
+
+package org.eclipse.rse.internal.logging;
+
+import org.eclipse.core.runtime.Preferences;
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.rse.core.RSECorePlugin;
+import org.eclipse.rse.logging.Logger;
+
+/**
+ * This class initializes logging preferences.
+ */
+public class LoggingPreferenceInitializer extends AbstractPreferenceInitializer {
+
+ /**
+ * Constructor.
+ */
+ public LoggingPreferenceInitializer() {
+ super();
+ }
+
+ /**
+ * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
+ */
+ public void initializeDefaultPreferences() {
+ Preferences prefs = RSECorePlugin.getDefault().getPluginPreferences();
+ prefs.setDefault(Logger.LOGGING_LEVEL, Logger.LOG_ERROR);
+ }
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/Logger.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/Logger.java
new file mode 100644
index 00000000000..c0e85501a81
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/Logger.java
@@ -0,0 +1,250 @@
+/********************************************************************************
+ * Copyright (c) 2002, 2006 IBM Corporation. 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
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * {Name} (company) - description of contribution.
+ ********************************************************************************/
+
+package org.eclipse.rse.logging;
+
+import org.eclipse.core.runtime.ILog;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Preferences;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.Preferences.IPropertyChangeListener;
+import org.eclipse.core.runtime.Preferences.PropertyChangeEvent;
+import org.eclipse.rse.internal.logging.LogListener;
+
+/**
+ * Generic Logger class for handling Remote Systems logging and tracing.
+ *
+ * The debug level is determined by a "debug_level" key in the preferences store
+ * of the plugin that owns this Logger instance.
+ *
+ * The debug location is determined by a "log_location" key in the preferences store
+ * of the plugin that owns this Logger instance.
+ *
+ * The valid values for these keys can be found in the javadocs for IRemoteSystemsLogging.
.
+ * This means that these keys could have been defined through hardcoding in your
+ * plugin startup code, through preferences.ini in the plugin install directory,
+ * OR from pref_store.ini in the plugin read/write metadata area.
+ * The default behavior is to log to file, and to log only errors.
+ *
+ * A typical usage of this class is as follows:
+ *
+ * public class myPlugin extends AbstractUIPlugin {
+ *
+ * // a cached Logger inst for convenience.
+ * public static Logger out = null;
+ *
+ * public myPlugin(IPluginDescriptor descriptor) {
+ * super(descriptor);
+ * ......
+ * ......
+ * out = LoggerFactory.getInst(this);
+ * out.logInfo("loading myPlugin class.");
+ * //out.logWarning("This is a warning message.");
+ * //out.logError("This is an error.", new Exception());
+ * //out.logDebugMessage(
+ * // "myPlugin",
+ * // "this is a debug message from class myPlugin.");
+ * ......
+ * ......
+ * }
+ *
+ *
+ * public void shutdown() throws CoreException {
+ * super.shutdown();
+ * LoggerFactory.freeInst(this);
+ * }
+ *
+ *
+ */
+public class Logger implements IPropertyChangeListener {
+
+ /**
+ * Constant can be used to surround debugging code. Optimizing
+ * compilers have the possibility of removing the code from
+ * a production copy.
+ *
+ * Should be set false normally. Only set to true when testing.
+ */
+ public static final boolean DEBUG = false;
+
+ /**
+ * Name of the key that controls the logging level.
+ * (value is "debug_level").
+ */
+ public static final String LOGGING_LEVEL = "logging_level"; //$NON-NLS-1$
+ /**
+ * Set debug_level to this value to get Error messages.
+ * (value is 0).
+ */
+ public static final int LOG_ERROR = 0;
+ /**
+ * Set debug_level to this value to get Warning messages.
+ * (value is 1).
+ */
+ public static final int LOG_WARNING = 1;
+ /**
+ * Set debug_level to this value to get Information messages.
+ * (value is 2).
+ */
+ public static final int LOG_INFO = 2;
+ /**
+ * Set debug_level to this value to get Debug messages.
+ * (value is 3).
+ */
+ public static final int LOG_DEBUG = 3;
+
+ private ILog systemsPluginLog = null;
+
+ private LogListener logListener = null;
+
+ private String pluginId = null;
+
+ private Plugin systemPlugin = null;
+
+ private int debug_level = Logger.LOG_ERROR;
+
+ /**
+ * Creates a new Logger. Invoked by the LoggerFactory.
+ * @param systemPlugin The preferences for this plugin will determine the detail
+ * logged by this logger. This allows different levels of detail to be logged in the
+ * workbench.
+ * @see LoggerFactory#getLogger(Plugin)
+ */
+ Logger(Plugin systemPlugin) {
+ this.systemPlugin = systemPlugin;
+ this.pluginId = systemPlugin.getBundle().getSymbolicName();
+ initialize();
+ }
+
+ public synchronized void freeResources() {
+ logListener.freeResources();
+ }
+
+ public synchronized int getDebugLevel() {
+ return debug_level;
+ }
+
+ /**
+ * Log a Debug message. This is intended to be used as follows:
+ * Logger.logDebugMessage("someClassName", "someMessage");
+ *
+ * and the output will be:
+ *
+ * ---------------------------------------------------------------
+ * DEBUG org.eclipse.rse.logging someClassName
+ * someMessage
+ * ---------------------------------------------------------------
+ *
+ *
+ * Note that since this message is only for developer debugging, it does not
+ * need to be localized to proper local.
+ */
+ public synchronized void logDebugMessage(String className, String message) {
+ if (Logger.DEBUG && debug_level >= Logger.LOG_DEBUG) {
+ MultiStatus debugStatus = new MultiStatus(pluginId, IStatus.OK, className, null);
+ Status infoStatus = new Status(IStatus.OK, pluginId, IStatus.OK, message, null);
+ debugStatus.add(infoStatus);
+ systemsPluginLog.log(debugStatus);
+ }
+ }
+
+ /**
+ * Log an Error message with an exception. Note that the message should already
+ * be localized to proper locale.
+ * @param message the message to log.
+ * @param ex the exception that caused the condition, may be null.
+ */
+ public synchronized void logError(String message, Throwable ex) {
+ if (debug_level >= Logger.LOG_ERROR) {
+ if (message == null) message = ""; //$NON-NLS-1$
+ Status errorStatus = new Status(IStatus.ERROR, pluginId, IStatus.OK, message, ex);
+ systemsPluginLog.log(errorStatus);
+ }
+ }
+
+ /**
+ * Log an Information message. Note that the message should already
+ * be localized to proper local.
+ * ie: Resource.getString() should already have been called
+ */
+ public synchronized void logInfo(String message) {
+ logInfo(message, null);
+ }
+
+ /**
+ * Log an Information message. Note that the message should already
+ * be localized to proper local.
+ * ie: Resource.getString() should already have been called
+ */
+ public synchronized void logInfo(String message, Throwable ex) {
+ if (debug_level >= Logger.LOG_INFO) {
+ if (message == null) message = ""; //$NON-NLS-1$
+ Status infoStatus = new Status(IStatus.INFO, pluginId, IStatus.OK, message, ex);
+ systemsPluginLog.log(infoStatus);
+ }
+ }
+
+ /**
+ * Log a Warning message. Note that the message should already
+ * be localized to proper local.
+ * ie: Resource.getString() should already have been called
+ */
+ public synchronized void logWarning(String message) {
+ logWarning(message, null);
+ }
+
+ /**
+ * Log a Warning message. Note that the message should already
+ * be localized to proper local.
+ * ie: Resource.getString() should already have been called
+ */
+ public synchronized void logWarning(String message, Throwable ex) {
+ if (debug_level >= Logger.LOG_WARNING) {
+ if (message == null) message = ""; //$NON-NLS-1$
+ Status warningStatus = new Status(IStatus.WARNING, pluginId, IStatus.OK, message, ex);
+ systemsPluginLog.log(warningStatus);
+ }
+ }
+
+ /**
+ * Handle changes from a Preferences page.
+ */
+ public synchronized void propertyChange(PropertyChangeEvent event) {
+ Preferences prefs = systemPlugin.getPluginPreferences();
+ debug_level = prefs.getInt(Logger.LOGGING_LEVEL);
+ }
+
+ public synchronized void setDebugLevel(int level) {
+ debug_level = level;
+ }
+
+ /**
+ * Initialize the Logger. The logger uses an ILog from the platform for this particular plugin, and
+ * establishes a listener on that log to format the items placed in the log.
+ */
+ private void initialize() {
+ systemsPluginLog = systemPlugin.getLog();
+ logListener = new LogListener(systemPlugin);
+ systemsPluginLog.addLogListener(logListener);
+ Preferences store = systemPlugin.getPluginPreferences();
+ debug_level = store.getInt(Logger.LOGGING_LEVEL);
+ store.addPropertyChangeListener(this);
+ store.addPropertyChangeListener(logListener);
+ }
+
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/LoggerFactory.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/LoggerFactory.java
new file mode 100644
index 00000000000..e2ad3124314
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/logging/LoggerFactory.java
@@ -0,0 +1,61 @@
+/********************************************************************************
+ * Copyright (c) 2006 IBM Corporation. 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
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * {Name} (company) - description of contribution.
+ ********************************************************************************/
+
+package org.eclipse.rse.logging;
+
+import java.util.Hashtable;
+
+import org.eclipse.core.runtime.Plugin;
+
+/**
+ * Factory class for creating Logger instances.
+ * Keep in mind that this factory class follows the singleton model.
+ * ie: once an instance of a Logger class for a given plugin is created,
+ * it will always be reused.
+ */
+public class LoggerFactory {
+
+ private static Hashtable pluginTable = new Hashtable();
+
+ /**
+ * Returns the Logger instance for a given plugin. There is only
+ * one instance of the Logger class per plugin.
+ * @param plugin the plugin for which to find or create the log
+ * @return the logger for that plugin
+ */
+ public static Logger getLogger(Plugin plugin) {
+ Logger logger = (Logger) pluginTable.get(plugin);
+ if (logger == null) {
+ logger = new Logger(plugin);
+ pluginTable.put(plugin, logger);
+ }
+ return logger;
+ }
+
+ /**
+ * Frees resources used by the Logger instance for the given plugin.
+ * This method must be called as part of the the plugin shutdown life cycle.
+ * @param plugin the plugin for which to free logging resources
+ */
+ public static void freeLogger(Plugin plugin) {
+ Logger logger = (Logger) pluginTable.get(plugin);
+ if (logger != null) {
+ logger.freeResources();
+ pluginTable.remove(plugin);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/HelpContexts.xml b/rse/plugins/org.eclipse.rse.ui/HelpContexts.xml
index c32bab0b85c..296cfd8a6a0 100644
--- a/rse/plugins/org.eclipse.rse.ui/HelpContexts.xml
+++ b/rse/plugins/org.eclipse.rse.ui/HelpContexts.xml
@@ -967,4 +967,14 @@ From here you can manage the certificates that the RSE client uses when connecti
+
+
+This page allows you to specify the Remote System Explorer logging preferences.
+
+You can specify what severity of messages you wish to log - from informational messages, to warnings, to errors. If it is available, the debug setting provides the most detail.
+
+Messages are logged to the .log file in the .metadata folder of the workspace.
+
+
+
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.ui/META-INF/MANIFEST.MF
index d973cdd3b85..fb99564205b 100644
--- a/rse/plugins/org.eclipse.rse.ui/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.rse.ui/META-INF/MANIFEST.MF
@@ -8,7 +8,6 @@ Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.rse.services,
- org.eclipse.rse.logging,
org.eclipse.core.resources,
org.eclipse.jface.text,
org.eclipse.ui.views,
@@ -26,6 +25,11 @@ Export-Package: org.eclipse.rse.core,
org.eclipse.rse.internal.model;x-internal:=true,
org.eclipse.rse.internal.ui;x-internal:=true,
org.eclipse.rse.internal.ui.actions;x-internal:=true,
+ org.eclipse.rse.internal.ui.dialogs;x-internal:=true,
+ org.eclipse.rse.internal.ui.filters;x-internal:=true,
+ org.eclipse.rse.internal.ui.filters.dialogs;x-internal:=true,
+ org.eclipse.rse.internal.ui.logging;x-internal:=true,
+ org.eclipse.rse.internal.ui.propertypages;x-internal:=true,
org.eclipse.rse.internal.ui.view;x-internal:=true,
org.eclipse.rse.internal.ui.view.monitor;x-internal:=true,
org.eclipse.rse.internal.ui.view.scratchpad;x-internal:=true,
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.java
new file mode 100644
index 00000000000..30c775e5bc1
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.java
@@ -0,0 +1,29 @@
+/********************************************************************************
+ * Copyright (c) 2006 IBM Corporation. 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:
+ * David Dykstal (IBM) - 148434 Better F1 help.
+ ********************************************************************************/
+package org.eclipse.rse.internal.ui.logging;
+
+import org.eclipse.osgi.util.NLS;
+
+public class LoggingPreferenceLabels extends NLS {
+
+ private static String BUNDLE_NAME = "org.eclipse.rse.internal.ui.logging.LoggingPreferenceLabels";//$NON-NLS-1$
+
+ public static String LOGGING_PREFERENCE_PAGE_TOPLABEL;
+ public static String LOGGING_PREFERENCE_PAGE_ERRORS_ONLY;
+ public static String LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS;
+ public static String LOGGING_PREFERENCE_PAGE_INFO_DEBUG;
+ public static String LOGGING_PREFERENCE_PAGE_FULL_DEBUG;
+
+ static {
+ // load message values from bundle file
+ NLS.initializeMessages(BUNDLE_NAME, LoggingPreferenceLabels.class);
+ }
+
+}
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.properties b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.properties
new file mode 100644
index 00000000000..0bc35b6014f
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferenceLabels.properties
@@ -0,0 +1,29 @@
+################################################################################
+# Copyright (c) 2006 IBM Corporation. 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
+#
+# Initial Contributors:
+# The following IBM employees contributed to the Remote System Explorer
+# component that contains this file: David McKnight, Kushal Munir,
+# Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+# Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+#
+# Contributors:
+# {Name} (company) - description of contribution.
+################################################################################
+
+# =====================================
+# Remote System Logging properties file
+# =====================================
+# NLS_MESSAGEFORMAT_VAR
+# NLS_ENCODING=UTF-8
+
+# Preference Page
+# ----------------
+LOGGING_PREFERENCE_PAGE_TOPLABEL = Logging Level
+LOGGING_PREFERENCE_PAGE_ERRORS_ONLY = &Errors only
+LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS = &Warnings and errors
+LOGGING_PREFERENCE_PAGE_INFO_DEBUG = Warnings, errors and &information messages
+LOGGING_PREFERENCE_PAGE_FULL_DEBUG = Full &debug
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferencePage.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferencePage.java
new file mode 100644
index 00000000000..aa0bacb51c2
--- /dev/null
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/logging/LoggingPreferencePage.java
@@ -0,0 +1,245 @@
+/********************************************************************************
+ * Copyright (c) 2006 IBM Corporation. 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
+ *
+ * Initial Contributors:
+ * The following IBM employees contributed to the Remote System Explorer
+ * component that contains this file: David McKnight, Kushal Munir,
+ * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson,
+ * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley.
+ *
+ * Contributors:
+ * Michael Berger (IBM Canada) - 148434 Better F1 help.
+ * {Name} (company) - description of contribution.
+ ********************************************************************************/
+
+package org.eclipse.rse.internal.ui.logging;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.preference.PreferenceStore;
+import org.eclipse.rse.logging.Logger;
+import org.eclipse.swt.SWT;
+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.Group;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.Bundle;
+
+/**
+ * An abstract preference page for all remote system logging.
+ * Use a subclass of this page if you need a preference page to control
+ * logging.
+ */
+public abstract class LoggingPreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
+
+ private Button radioButton0;
+ private Button radioButton1;
+ private Button radioButton2;
+ private Button radioButton3;
+
+ /**
+ * 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
+ */
+ private Composite createComposite(Composite parent, int span, int numColumns) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ composite.setLayout(layout);
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ data.horizontalSpan = span;
+ composite.setLayoutData(data);
+ return composite;
+ }
+
+ /**
+ * Creates group 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
+ */
+ private Group createGroup(Composite parent, int span, int numColumns, String text) {
+ Group group = new Group(parent, SWT.NONE);
+ GridLayout layout = new GridLayout();
+ layout.numColumns = numColumns;
+ group.setLayout(layout);
+ GridData data = new GridData();
+ data.verticalAlignment = GridData.FILL;
+ data.horizontalAlignment = GridData.FILL;
+ data.horizontalSpan = span;
+ group.setLayoutData(data);
+ group.setText(text);
+ return group;
+ }
+
+ /**
+ * 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
+ */
+ private Button createRadioButton(Composite parent, String label) {
+ Button button = new Button(parent, SWT.RADIO | SWT.LEFT);
+ button.setText(label);
+ GridData data = new GridData();
+ button.setLayoutData(data);
+ return button;
+ }
+
+ /**
+ * Method declared on PreferencePage
+ */
+ protected Control createContents(Composite parent) {
+ Composite composite_tab = createComposite(parent, 1, 1);
+ String topLabel = LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_TOPLABEL;
+ Group group = createGroup(composite_tab, 1, 1, topLabel);
+ radioButton0 = createRadioButton(group, LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_ERRORS_ONLY);
+ radioButton1 = createRadioButton(group, LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_WARNINGS_ERRORS);
+ radioButton2 = createRadioButton(group, LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_INFO_DEBUG);
+ if (Logger.DEBUG) {
+ radioButton3 = createRadioButton(group, LoggingPreferenceLabels.LOGGING_PREFERENCE_PAGE_FULL_DEBUG);
+ }
+ initializeValues();
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, "org.eclipse.rse.ui.rsel0000"); //$NON-NLS-1$
+ return composite_tab;
+ }
+
+ /**
+ *
+ */
+ protected IPreferenceStore doGetPreferenceStore() {
+ Bundle bundle = getBundle();
+ if (bundle != null) {
+ AbstractUIPlugin plugin = getPlugin();
+ if (plugin != null) {
+ return plugin.getPreferenceStore();
+ } else {
+ return new PreferenceStore();
+ }
+ } else {
+ return new PreferenceStore();
+ }
+ }
+
+ protected abstract AbstractUIPlugin getPlugin();
+
+ private Bundle getBundle() {
+ Plugin plugin = getPlugin();
+ Bundle bundle = plugin.getBundle();
+ return bundle;
+ }
+
+ /**
+ * Method declared on IWorkbenchPreferencePage
+ */
+ public void init(IWorkbench workbench) {
+ }
+
+ /**
+ * Initializes states of the controls using current values
+ * in the preference store.
+ */
+ private void initializeValues() {
+ IPreferenceStore store = getPreferenceStore();
+ radioButton0.setSelection(false);
+ radioButton1.setSelection(false);
+ radioButton2.setSelection(false);
+ if (null != radioButton3) radioButton3.setSelection(false);
+ int choice = store.getInt(Logger.LOGGING_LEVEL);
+ switch (choice) {
+ case 0:
+ radioButton0.setSelection(true);
+ break;
+ case 1:
+ radioButton1.setSelection(true);
+ break;
+ case 2:
+ radioButton2.setSelection(true);
+ break;
+ case 3:
+ if (null != radioButton3)
+ radioButton3.setSelection(true);
+ else
+ radioButton2.setSelection(true);
+ break;
+ }
+ }
+
+ /**
+ * Initializes states of the controls using default values
+ * in the preference store.
+ */
+ private void initializeDefaults() {
+ IPreferenceStore store = getPreferenceStore();
+ radioButton0.setSelection(false);
+ radioButton1.setSelection(false);
+ radioButton2.setSelection(false);
+ if (null != radioButton3) radioButton3.setSelection(false);
+ int choice = store.getDefaultInt(Logger.LOGGING_LEVEL);
+ switch (choice) {
+ case 0:
+ radioButton0.setSelection(true);
+ break;
+ case 1:
+ radioButton1.setSelection(true);
+ break;
+ case 2:
+ radioButton2.setSelection(true);
+ break;
+ case 3:
+ if (null != radioButton3)
+ radioButton3.setSelection(true);
+ else
+ radioButton2.setSelection(true);
+ break;
+ }
+ }
+
+ /**
+ * Method declared on PreferencePage
+ */
+ protected void performDefaults() {
+ super.performDefaults();
+ initializeDefaults();
+ }
+
+ /**
+ * Method declared on PreferencePage
+ */
+ public boolean performOk() {
+ storeValues();
+ return true;
+ }
+
+ /**
+ * Stores the values of the controls back to the preference store.
+ */
+ private void storeValues() {
+ IPreferenceStore store = getPreferenceStore();
+ int choice = 0;
+ if (radioButton1.getSelection())
+ choice = 1;
+ else if (radioButton2.getSelection())
+ choice = 2;
+ else if (null != radioButton3 && radioButton3.getSelection()) choice = 3;
+ store.setValue(Logger.LOGGING_LEVEL, choice);
+ }
+
+}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/propertypages/SystemLoggingPreferencePage.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/propertypages/SystemLoggingPreferencePage.java
index bbba0dcb2ea..f4a14c7d5e9 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/propertypages/SystemLoggingPreferencePage.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/propertypages/SystemLoggingPreferencePage.java
@@ -16,7 +16,7 @@
package org.eclipse.rse.internal.ui.propertypages;
-import org.eclipse.rse.internal.logging.ui.LoggingPreferencePage;
+import org.eclipse.rse.internal.ui.logging.LoggingPreferencePage;
import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.ui.plugin.AbstractUIPlugin;