[220757] Handle no runtime wizard fragment case better
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimePreferencePage.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimePreferencePage.java
index 7145b8c..4040244 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimePreferencePage.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/RuntimePreferencePage.java
@@ -17,6 +17,7 @@
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.Dialog;
@@ -30,6 +31,7 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
@@ -105,14 +107,25 @@
edit.setEnabled(false);
remove.setEnabled(false);
pathLabel.setText("");
- } else if (runtime.isReadOnly()) {
- edit.setEnabled(false);
- remove.setEnabled(false);
- pathLabel.setText(runtime.getLocation() + "");
} else {
- edit.setEnabled(true);
- remove.setEnabled(true);
- pathLabel.setText(runtime.getLocation() + "");
+ IStatus status = runtime.validate(new NullProgressMonitor());
+ if (status != null && status.getSeverity() == IStatus.ERROR) {
+ Color c = pathLabel.getDisplay().getSystemColor(SWT.COLOR_RED);
+ pathLabel.setForeground(c);
+ pathLabel.setText(status.getMessage());
+ } else if (runtime.getLocation() != null) {
+ pathLabel.setForeground(edit.getForeground());
+ pathLabel.setText(runtime.getLocation() + "");
+ } else
+ pathLabel.setText("");
+
+ if (runtime.isReadOnly()) {
+ edit.setEnabled(false);
+ remove.setEnabled(false);
+ } else {
+ edit.setEnabled(ServerUIPlugin.hasWizardFragment(runtime.getRuntimeType().getId()));
+ remove.setEnabled(true);
+ }
}
}
});
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
index 2c22f76..6d0f2b1 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/ServerUIPlugin.java
@@ -612,6 +612,30 @@
}
/**
+ * Returns true if the given id has possible wizard fragments, and
+ * false otherwise.
+ *
+ * @param typeId the server or runtime type id
+ * @return true if the given id has possible wizard fragments, and
+ * false otherwise
+ */
+ public static boolean hasWizardFragment(String typeId) {
+ if (typeId == null)
+ return false;
+
+ if (wizardFragments == null)
+ loadWizardFragments();
+
+ Iterator iterator = wizardFragments.keySet().iterator();
+ while (iterator.hasNext()) {
+ String key = (String) iterator.next();
+ if (typeId.equals(key))
+ return true;
+ }
+ return false;
+ }
+
+ /**
* Returns the wizard fragment with the given id.
*
* @param typeId the server or runtime type id
@@ -620,7 +644,7 @@
public static WizardFragment getWizardFragment(String typeId) {
if (typeId == null)
return null;
-
+
if (wizardFragments == null)
loadWizardFragments();
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/editor/OverviewEditorPart.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/editor/OverviewEditorPart.java
index 0eeaf88..a3ece18 100644
--- a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/editor/OverviewEditorPart.java
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/internal/editor/OverviewEditorPart.java
@@ -393,12 +393,15 @@
// runtime
if (server != null && server.getServerType() != null && server.getServerType().hasRuntime()) {
final IRuntime runtime = server.getRuntime();
- Hyperlink link = toolkit.createHyperlink(composite, Messages.serverEditorOverviewRuntime, SWT.NONE);
- link.addHyperlinkListener(new HyperlinkAdapter() {
- public void linkActivated(HyperlinkEvent e) {
- editRuntime(runtime);
- }
- });
+ if (ServerUIPlugin.hasWizardFragment(runtime.getRuntimeType().getId())) {
+ Hyperlink link = toolkit.createHyperlink(composite, Messages.serverEditorOverviewRuntime, SWT.NONE);
+ link.addHyperlinkListener(new HyperlinkAdapter() {
+ public void linkActivated(HyperlinkEvent e) {
+ editRuntime(runtime);
+ }
+ });
+ } else
+ createLabel(toolkit, composite, Messages.serverEditorOverviewRuntime);
IRuntimeType runtimeType = server.getServerType().getRuntimeType();
runtimes = ServerUIPlugin.getRuntimes(runtimeType);