From 02cf48046f0aa149dd470d2a04d368a36d873e00 Mon Sep 17 00:00:00 2001 From: Martin Oberhuber Date: Thu, 10 Sep 2015 18:15:27 +0200 Subject: [PATCH] Cleanup: Fix Terminal API Markup part 2 Mark Terminal Interfaces as @noextend @noimplement where implementation doesn't make sense (since it's just constants or an abstract base class exists for extending). This helps giving room for safely extending Terminal interfaces in a backward-compatible way in the future, by leveraging Eclipse API Tooling. Change-Id: Ia5a99f9379ddd73dd58afe4dec4540ae24633b09 Signed-off-by: Martin Oberhuber --- .../terminal/control/ITerminalViewControl.java | 1 + .../terminal/preferences/ITerminalConstants.java | 6 ++++++ .../preferences/TerminalPreferenceInitializer.java | 12 +++++++++--- .../terminal/preferences/TerminalPreferencePage.java | 7 +++++++ .../tm/terminal/view/ui/help/IContextHelpIds.java | 3 +++ .../view/ui/interfaces/IConfigurationPanel.java | 5 +++++ .../ui/interfaces/IConfigurationPanelContainer.java | 3 +++ .../view/ui/interfaces/ILauncherDelegate.java | 5 +++++ .../terminal/view/ui/interfaces/ITerminalsView.java | 3 +++ .../tm/terminal/view/ui/interfaces/IUIConstants.java | 3 +++ .../view/ui/interfaces/tracing/ITraceIds.java | 3 +++ 11 files changed, 48 insertions(+), 3 deletions(-) diff --git a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java index a943e3c4dc8..904897c3df9 100644 --- a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java +++ b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/control/ITerminalViewControl.java @@ -26,6 +26,7 @@ import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; /** * @author Michael Scharf * + * @noextend This interface is not intended to be extended by clients. * @noimplement This interface is not intended to be implemented by clients. */ public interface ITerminalViewControl { diff --git a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java index 0678d47767d..907c79d095f 100644 --- a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java +++ b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/ITerminalConstants.java @@ -12,6 +12,12 @@ *******************************************************************************/ package org.eclipse.tm.internal.terminal.preferences; +/** + * Constants for Terminal Preferences. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + */ public interface ITerminalConstants { public static final String PREF_HAS_MIGRATED = "TerminalPref.migrated"; //$NON-NLS-1$ diff --git a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java index 6e9f6dc9ac1..920d5e4cf6e 100644 --- a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java +++ b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferenceInitializer.java @@ -18,15 +18,21 @@ import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin; +/** + * Terminal Preference Initializer. + * + * @noextend This class is not intended to be subclassed by clients. + * @noinstantiate This class is not intended to be instantiated by clients. + * @noreference This class is not intended to be referenced by clients. + */ public class TerminalPreferenceInitializer extends AbstractPreferenceInitializer { public TerminalPreferenceInitializer() { } public void initializeDefaultPreferences() { - //DefaultScope.INSTANCE was only added in Eclipse 3.7 - we want to be compatible further back - //IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(TerminalPlugin.PLUGIN_ID); - IEclipsePreferences defaultPrefs = new DefaultScope().getNode(TerminalPlugin.PLUGIN_ID); + //DefaultScope.INSTANCE was added in Eclipse 3.7 + IEclipsePreferences defaultPrefs = DefaultScope.INSTANCE.getNode(TerminalPlugin.PLUGIN_ID); defaultPrefs.putBoolean(ITerminalConstants.PREF_INVERT_COLORS, ITerminalConstants.DEFAULT_INVERT_COLORS); defaultPrefs.putInt(ITerminalConstants.PREF_BUFFERLINES, ITerminalConstants.DEFAULT_BUFFERLINES); } diff --git a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java index 8f5455a6ba5..89a2c8f8df1 100644 --- a/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java +++ b/plugins/org.eclipse.tm.terminal.control/src/org/eclipse/tm/internal/terminal/preferences/TerminalPreferencePage.java @@ -26,6 +26,13 @@ import org.eclipse.tm.internal.terminal.control.impl.TerminalPlugin; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; +/** + * Terminal Preference Page. + * + * @noextend This class is not intended to be subclassed by clients. + * @noinstantiate This class is not intended to be instantiated by clients. + * @noreference This class is not intended to be referenced by clients. + */ public class TerminalPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { protected BooleanFieldEditor fInvertColors; diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java index 19878b514bb..b2e7954653d 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/help/IContextHelpIds.java @@ -14,6 +14,9 @@ import org.eclipse.tm.terminal.view.ui.activator.UIPlugin; /** * UI Context help id definitions. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface IContextHelpIds { diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java index 325028ce12a..dcdfc67aa7f 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanel.java @@ -15,9 +15,14 @@ import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.IMessageProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.widgets.Composite; +import org.eclipse.tm.terminal.view.ui.panels.AbstractConfigurationPanel; /** * Terminal launcher configuration panel. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + * Clients should extend {@link AbstractConfigurationPanel} instead. */ public interface IConfigurationPanel extends IMessageProvider { diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java index 4ff7cc2e53d..9be4adfa9d1 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IConfigurationPanelContainer.java @@ -13,6 +13,9 @@ package org.eclipse.tm.terminal.view.ui.interfaces; /** * A container to deal with configuration panels. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface IConfigurationPanelContainer { diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java index 7c5dae861d1..c7b7be3dcda 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ILauncherDelegate.java @@ -16,9 +16,14 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IExecutableExtension; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; import org.eclipse.tm.terminal.view.core.interfaces.ITerminalService; +import org.eclipse.tm.terminal.view.ui.launcher.AbstractLauncherDelegate; /** * Terminal launcher delegate. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. + * Clients should extend {@link AbstractLauncherDelegate} instead. */ public interface ILauncherDelegate extends IExecutableExtension, IAdaptable { diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java index 6c2b36fa9a4..c3a5ec8faf6 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/ITerminalsView.java @@ -14,6 +14,9 @@ import org.eclipse.ui.IViewPart; /** * Terminal view public interface. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface ITerminalsView extends IViewPart { diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java index bd5d241ce1d..dcaadddeffe 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/IUIConstants.java @@ -11,6 +11,9 @@ package org.eclipse.tm.terminal.view.ui.interfaces; /** * Terminal common UI constants. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface IUIConstants { /** diff --git a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java index 40a649310a1..d0e4d4d55f9 100644 --- a/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java +++ b/plugins/org.eclipse.tm.terminal.view.ui/src/org/eclipse/tm/terminal/view/ui/interfaces/tracing/ITraceIds.java @@ -11,6 +11,9 @@ package org.eclipse.tm.terminal.view.ui.interfaces.tracing; /** * Core plug-in trace slot identifiers. + * + * @noextend This interface is not intended to be extended by clients. + * @noimplement This interface is not intended to be implemented by clients. */ public interface ITraceIds {