/******************************************************************************* * Copyright (c) 2006-2013, Cloudsmith Inc. * The code, documentation and other materials contained herein have been * licensed under the Eclipse Public License - v 1.0 by the copyright holder * listed above, as the Initial Contributor under such license. The text of * such license is available at www.eclipse.org. ******************************************************************************/ package org.eclipse.buckminster.ui.general.editor; import org.eclipse.buckminster.ui.Messages; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.events.HelpEvent; import org.eclipse.swt.events.HelpListener; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; /** * @author Karel Brezina * */ public abstract class TableRowDialog extends TitleAreaDialog { private final Image windowImage; private final String windowTitle; private final Image wizardImage; private final String helpURL; private final boolean newRow; private final boolean readOnly; public TableRowDialog(Shell parentShell, Image windowImage, String windowTitle, Image wizardImage, String helpURL, boolean newRow, boolean readOnly) { super(parentShell); this.windowImage = windowImage; this.windowTitle = windowTitle; this.wizardImage = wizardImage; this.helpURL = helpURL; this.newRow = newRow; this.readOnly = readOnly; } @Override public boolean isHelpAvailable() { return helpURL != null; } @Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(windowTitle); if (windowImage != null) { newShell.setImage(windowImage); } } @Override protected void createButtonsForButtonBar(Composite parent) { if (!isReadOnly()) { createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true); enableDisableOkButton(); } createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); } @Override protected Control createContents(Composite parent) { Control contents = super.createContents(parent); if (wizardImage != null) { setTitleImage(wizardImage); } if (isReadOnly()) { setTitle(Messages.view_row); setMessage(Messages.view_row_fields); } else { if (newRow) { setTitle(Messages.new_row); setMessage(Messages.enter_new_row_fields); } else { setTitle(Messages.edit_row); setMessage(Messages.edit_row_fields); } } return contents; } @Override protected Control createHelpControl(Composite parent) { Control helpControl = super.createHelpControl(parent); helpControl.addHelpListener(new HelpListener() { @Override public void helpRequested(HelpEvent e) { if (helpURL != null) { Program.launch(helpURL); } } }); return helpControl; } protected abstract void enableDisableOkButton(); protected boolean isReadOnly() { return readOnly; } }