Java tutorial
/******************************************************************************* * Copyright (c) 2000, 2005 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 *******************************************************************************/ package com.aptana.ide.editors.preferences; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; 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.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.internal.IWorkbenchHelpContextIds; import com.aptana.ide.core.StringUtils; import com.aptana.ide.editors.unified.contentassist.CodeAssistExpression; /** * This class is used to prompt the user for a file name & extension. */ public class CodeAssistExpressionInfoDialog extends TitleAreaDialog { private Text message; private Text xPath; private String messageText; private String xPathText; private CodeAssistExpression expression; private Button okButton; /** * Constructs a new file extension dialog. * @param parentShell the parent shell */ public CodeAssistExpressionInfoDialog(Shell parentShell) { super(parentShell); } /** * Method declared in Window. * @param shell */ protected void configureShell(Shell shell) { super.configureShell(shell); shell.setText(CodeAssistMessages.CodeAssistExpressionInfoDialog_AddXPathExpression); //$NON-NLS-1$ PlatformUI.getWorkbench().getHelpSystem().setHelp(shell, IWorkbenchHelpContextIds.FILE_EXTENSION_DIALOG); } /** * Creates and returns the contents of the upper part * of the dialog (above the button bar). * * Subclasses should overide. * * @param parent the parent composite to contain the dialog area * @return the dialog area control */ protected Control createDialogArea(Composite parent) { // top level composite Composite parentComposite = (Composite) super.createDialogArea(parent); // create a composite with standard margins and spacing Composite contents = new Composite(parentComposite, SWT.NONE); GridLayout layout = new GridLayout(); layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); layout.numColumns = 2; contents.setLayout(layout); contents.setLayoutData(new GridData(GridData.FILL_BOTH)); contents.setFont(parentComposite.getFont()); setTitle(CodeAssistMessages.CodeAssistExpressionInfoDialog_AddXPathExpression); setMessage(CodeAssistMessages.CodeAssistExpressionInfoDialog_AddXPathExpressionToTriggerAttributes); // begin the layout Label label = new Label(contents, SWT.LEFT); label.setText( StringUtils.makeFormLabel(CodeAssistMessages.CodeAssistExpressionInfoDialog_AttributeExpression)); GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; label.setLayoutData(data); label.setFont(parent.getFont()); message = new Text(contents, SWT.SINGLE | SWT.BORDER); message.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { if (event.widget == message) { if (okButton != null) { okButton.setEnabled(validateErrorDescriptor()); } } } }); data = new GridData(); data.horizontalAlignment = GridData.FILL; data.grabExcessHorizontalSpace = true; message.setLayoutData(data); message.setFocus(); Label labelXPath = new Label(contents, SWT.LEFT); labelXPath.setText( StringUtils.makeFormLabel(CodeAssistMessages.CodeAssistExpressionInfoDialog_AttributeXPath)); data = new GridData(); data.horizontalAlignment = GridData.FILL; labelXPath.setLayoutData(data); labelXPath.setFont(parent.getFont()); xPath = new Text(contents, SWT.SINGLE | SWT.BORDER); xPath.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent event) { if (event.widget == xPath) { if (okButton != null) { okButton.setEnabled(validateErrorDescriptor()); } } } }); data = new GridData(); data.horizontalAlignment = GridData.FILL; data.grabExcessHorizontalSpace = true; xPath.setLayoutData(data); Dialog.applyDialogFont(parentComposite); if (expression != null) { message.setText(expression.getExpression()); xPath.setText(expression.getXPath()); } return contents; } /** * Validate the user input for a file type */ private boolean validateErrorDescriptor() { // check for empty message if (StringUtils.EMPTY.equals(message.getText()) || StringUtils.EMPTY.equals(xPath.getText())) { return false; } messageText = message.getText(); xPathText = xPath.getText(); return true; } /** * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite) */ protected void createButtonsForButtonBar(Composite parent) { okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); okButton.setEnabled(validateErrorDescriptor()); } /** * Get the message. * * @return the extension */ public String getExpression() { return messageText; } /** * Get the xPath. * * @return the extension */ public String getXPath() { return xPathText; } /** * Sets the item to edit * @param ed */ public void setItem(CodeAssistExpression ed) { expression = ed; } }