Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'core/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java')
-rw-r--r--core/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java164
1 files changed, 164 insertions, 0 deletions
diff --git a/core/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java b/core/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java
new file mode 100644
index 000000000..fe6f8f765
--- /dev/null
+++ b/core/bundles/org.eclipse.wst.command.env.ui/src/org/eclipse/wst/command/internal/env/ui/widgets/SimpleDialog.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ * Copyright (c) 2004, 2006 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
+ * yyyymmdd bug Email and other contact information
+ * -------- -------- -----------------------------------------------------------
+ * 20060418 136335 joan@ca.ibm.com - Joan Haggarty
+ * 20060418 136759 joan@ca.ibm.com - Joan Haggarty
+ * 20061106 142500 david.schneider@unisys.com - David Schneider
+ * 20060829 180833 ericdp@ca.ibm.com - Eric D. Peters, New Web Service wizard service settings dialog has unlabelled enabled text fields
+ *******************************************************************************/
+package org.eclipse.wst.command.internal.env.ui.widgets;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.swt.SWT;
+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.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public abstract class SimpleDialog extends Dialog implements DialogDataEvents
+{
+ private WidgetContributor widget_;
+ private WidgetDataEvents dataEvents_;
+ private Listener statusListener_;
+ protected WizardPageManager pageManager_;
+ private Text messageText_;
+ private boolean ok_;
+
+ public SimpleDialog( Shell shell, PageInfo pageInfo)
+ {
+ super(shell);
+ widget_ = pageInfo.getWidgetFactory().create();
+ statusListener_ = new StatusListener();
+ }
+
+ Composite parent_;
+ public Control createDialogArea( Composite parent )
+ {
+ parent_ = parent;
+ Composite control = (Composite) super.createDialogArea(parent);
+ dataEvents_ = widget_.addControls( control, statusListener_ );
+
+ //Text area to display validation messages
+ messageText_ = new Text(parent, SWT.WRAP | SWT.MULTI | SWT.READ_ONLY);
+ messageText_.setBackground(parent.getBackground());
+ GridData griddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL);
+ griddata.horizontalIndent = 10;
+ messageText_.setLayoutData( griddata );
+ parent_.setFocus();
+
+ //Call extenders override of the callSetters method to intialize any data in widget
+ callSetters();
+ Dialog.applyDialogFont(parent);
+ return control;
+ }
+
+ //Override of Dialog.createContents so we can affect button enablement
+ protected Control createContents(Composite parent) {
+ Control c = super.createContents(parent);
+ //enable controls for initial entry to dialog
+ validatePageToStatus();
+ return c;
+ }
+
+ // Enable or disable ok button based on state
+ private void enableOk(boolean state)
+ {
+ Button okButton = getButton(IDialogConstants.OK_ID);
+ if (okButton != null)
+ okButton.setEnabled(state);
+ }
+
+ //Implement this method to call all setters on the dialog widget after the controls are created
+ protected abstract void callSetters();
+
+ public WidgetDataEvents getDataEvents()
+ {
+ return dataEvents_;
+ }
+
+ protected WidgetContributor getWidget()
+ {
+ return widget_;
+ }
+
+ // sets message in message area above OK and Cancel buttons
+ private void setMessage(String message)
+ {
+ if (message == null)
+ messageText_.setText("");
+ else
+ messageText_.setText(message);
+ // force a resize of the parent composite and wrap of the text field if necessary
+ parent_.layout();
+ }
+
+
+
+ public void validatePageToStatus()
+ {
+ IStatus status = widget_.getStatus();
+
+ if( status != null )
+ {
+ String message = status.getMessage();
+ int severity = status.getSeverity();
+
+ // for error condition, disable ok and print message
+ if( severity == IStatus.ERROR )
+ {
+ if( message.length() == 0 )
+ {
+ setMessage( null);
+ }
+ else
+ {
+ setMessage(message);
+ }
+ ok_ = false;
+ }
+ // display warning and info messages but still enable OK
+ else if (severity == IStatus.WARNING | severity == IStatus.INFO)
+ {
+ setMessage(message);
+ ok_ = true;
+ }
+ // no message to display
+ else
+ {
+ setMessage( null);
+ ok_ = true;
+ }
+ }
+ // null status case
+ else
+ {
+ setMessage(null);
+ ok_ = true;
+ }
+
+ enableOk(ok_);
+ }
+
+ private class StatusListener implements Listener
+ {
+ public void handleEvent( Event evt )
+ {
+ validatePageToStatus();
+ }
+ }
+}
+

Back to the top