blob: be3f5440d3b127b1fd6fa02deddc3649df1db880 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.forms.examples.internal.rcp;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Text;
import org.eclipse.ui.forms.HyperlinkSettings;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.IMessage;
import org.eclipse.ui.forms.IMessageManager;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
/**
* This page shows how to use the message manager to handle
* errors in a form page.
* @since 3.3
*/
public class ErrorMessagesPage extends FormPage {
/**
* @param id
* @param title
*/
public ErrorMessagesPage(FormEditor editor) {
super(editor, "messageManager", "Message Manager");
}
protected void createFormContent(final IManagedForm managedForm) {
final ScrolledForm form = managedForm.getForm();
FormToolkit toolkit = managedForm.getToolkit();
toolkit.getHyperlinkGroup().setHyperlinkUnderlineMode(
HyperlinkSettings.UNDERLINE_HOVER);
form.setText("Example with message handling");
toolkit.decorateFormHeading(form.getForm());
form.getForm().addMessageHyperlinkListener(new HyperlinkAdapter() {
public void linkActivated(HyperlinkEvent e) {
String title = e.getLabel();
String details = title;
Object href = e.getHref();
if (href instanceof IMessage[]) {
details = managedForm.getMessageManager().createSummary((IMessage[])href);
}
int type = form.getForm().getMessageType();
switch (type) {
case IMessageProvider.NONE:
case IMessageProvider.INFORMATION:
MessageDialog.openInformation(form.getShell(), title,
details);
break;
case IMessageProvider.WARNING:
MessageDialog.openWarning(form.getShell(), title, details);
break;
case IMessageProvider.ERROR:
MessageDialog.openError(form.getShell(), title, details);
break;
}
}
});
final IMessageManager mmng = managedForm.getMessageManager();
TableWrapLayout layout = new TableWrapLayout();
form.getBody().setLayout(layout);
Section section = toolkit.createSection(form.getBody(),
Section.TITLE_BAR);
section.setText("Local field messages");
Composite sbody = toolkit.createComposite(section);
section.setClient(sbody);
GridLayout glayout = new GridLayout();
glayout.horizontalSpacing = 10;
glayout.numColumns = 2;
sbody.setLayout(glayout);
toolkit.paintBordersFor(sbody);
createDecoratedTextField("Field1", toolkit, sbody, mmng);
createDecoratedTextField("Field2", toolkit, sbody, mmng);
createDecoratedTextField("Field3", toolkit, sbody, mmng);
final Button button1 = toolkit.createButton(form.getBody(),
"Add general error", SWT.CHECK);
button1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (button1.getSelection()) {
mmng.addMessage("saveError", "Save Error",
null, IMessageProvider.ERROR);
} else {
mmng.removeMessage("saveError");
}
}
});
final Button button2 = toolkit.createButton(form.getBody(),
"Add static message", SWT.CHECK);
button2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (button2.getSelection()) {
mmng.addMessage("info", "Secondary info",
null, IMessageProvider.NONE);
} else {
mmng.removeMessage("info");
}
}
});
}
private void createDecoratedTextField(String label, FormToolkit toolkit,
Composite parent, final IMessageManager mmng) {
toolkit.createLabel(parent, label);
final Text text = toolkit.createText(parent, "");
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 150;
text.setLayoutData(gd);
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
String s = text.getText();
// flag length
if (s.length() > 5 && s.length() <= 10) {
mmng.addMessage("textLength",
"Text is longer than 5 characters",
null, IMessageProvider.WARNING, text);
} else if (s.length() > 10) {
mmng.addMessage("textLength",
"Text is longer than 10 characters",
null, IMessageProvider.ERROR, text);
} else {
mmng.removeMessage("textLength", text);
}
// flag type
boolean badType = false;
for (int i = 0; i < s.length(); i++) {
if (!Character.isLetter(s.charAt(i))) {
badType = true;
break;
}
}
if (badType) {
mmng.addMessage("textType",
"Text must only contain letters",
null, IMessageProvider.ERROR, text);
} else {
mmng.removeMessage("textType", text);
}
}
});
}
}