blob: bf043bb4eeba105184860cd7f28c4c75016427a9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.internal.ui.macbundler;
import org.eclipse.jface.dialogs.DialogPage;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardContainer;
import org.eclipse.jface.wizard.IWizardPage;
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.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public abstract class BundleWizardBasePage extends DialogPage implements IWizardPage, BundleAttributes, IPropertyChangeListener {
/**
* The page that was shown right before this page became visible;
* <code>null</code> if none.
*/
private IWizardPage fPreviousPage;
/**
* This page's message key.
*/
private String fKey;
/**
* The wizard to which this page belongs; <code>null</code>
* if this page has yet to be added to a wizard.
*/
private IWizard fWizard;
BundleDescription fBundleDescription;
BundleWizardBasePage(String key, BundleDescription bd) {
super(Util.getString(key + ".title")); //$NON-NLS-1$
fKey= key;
fBundleDescription= bd;
//setMessage(Util.getString(fKey + ".message")); //$NON-NLS-1$
setDescription(Util.getString(fKey + ".description")); //$NON-NLS-1$
bd.addListener(this);
}
/* (non-Javadoc)
* Method declared in WizardPage
*/
@Override
public void setVisible(boolean visible) {
if (visible) {
enterPage();
} else {
leavePage();
}
super.setVisible(visible);
}
void enterPage() {
//System.out.println("enterPage: " + getName());
}
void leavePage() {
//System.out.println("leavePage: " + getName());
}
@Override
public Image getImage() {
Image result = super.getImage();
if (result == null && fWizard != null) {
return fWizard.getDefaultPageImage();
}
return result;
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
*/
@Override
final public void createControl(Composite parent) {
Composite c= new Composite(parent, SWT.NULL);
c.setLayout(new GridLayout(1, false));
setControl(c);
createContents(c);
checkIfPageComplete();
}
abstract public void createContents(Composite parent);
static void setHeightHint(Control control, int height) {
GridData gd1= new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING);
gd1.heightHint= height;
control.setLayoutData(gd1);
}
static Label createLabel(Composite parent, String text, int align) {
Label l= new Label(parent, SWT.NONE);
l.setText(text);
l.setLayoutData(new GridData(align));
return l;
}
static Composite createComposite(Composite parent, int columns) {
Composite c= new Composite(parent, SWT.NONE);
c.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
GridLayout gl= new GridLayout(columns, false);
gl.marginWidth= 0;
c.setLayout(gl);
return c;
}
Text createText(Composite parent, String key, int lines) {
Text t= new Text(parent, SWT.BORDER);
GridData gd= new GridData(GridData.FILL_HORIZONTAL);
if (lines == 2) {
gd.heightHint= 30;
}
t.setLayoutData(gd);
hookField(t, key);
return t;
}
Combo createCombo(Composite parent, String key) {
Combo c= new Combo(parent, SWT.BORDER);
c.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
hookField(c, key);
return c;
}
static Group createGroup(Composite parent, String text, int columns) {
Group g= new Group(parent, SWT.NONE);
g.setText(text);
g.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
g.setLayout(new GridLayout(columns, false));
return g;
}
Button createButton(Composite parent, int flags, String text) {
Button b= new Button(parent, flags);
if (text != null) {
b.setText(text);
}
return b;
}
static Composite createHBox(Composite parent) {
Composite c= new Composite(parent, SWT.NONE);
c.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
GridLayout gl= new GridLayout(2, false);
gl.marginWidth= gl.marginHeight= 0;
c.setLayout(gl);
return c;
}
void hookField(final Text tf, final String key) {
tf.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
fBundleDescription.setValue(key, tf.getText());
checkIfPageComplete();
}
});
}
void hookField(final Combo tf, final String key) {
tf.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
fBundleDescription.setValue(key, tf.getText());
checkIfPageComplete();
}
});
}
void hookButton(final Button b, final String key) {
b.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
fBundleDescription.setValue(key, new Boolean(b.getSelection()));
checkIfPageComplete();
}
});
}
final void checkIfPageComplete() {
IWizardContainer c= (fWizard != null) ? fWizard.getContainer() : null;
if (c != null && this == c.getCurrentPage()) {
c.updateButtons();
}
}
/////////////////////////////////////////////////////////
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#canFlipToNextPage()
*/
@Override
public boolean canFlipToNextPage() {
return isPageComplete() && getNextPage() != null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#getName()
*/
@Override
public String getName() {
return Util.getString(fKey + ".title"); //$NON-NLS-1$;
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#getNextPage()
*/
@Override
public IWizardPage getNextPage() {
if (fWizard == null) {
return null;
}
return fWizard.getNextPage(this);
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#getPreviousPage()
*/
@Override
public IWizardPage getPreviousPage() {
if (fPreviousPage != null) {
return fPreviousPage;
}
if (fWizard != null) {
return fWizard.getPreviousPage(this);
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#getWizard()
*/
@Override
public IWizard getWizard() {
return fWizard;
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#setPreviousPage(org.eclipse.jface.wizard.IWizardPage)
*/
@Override
public void setPreviousPage(IWizardPage page) {
fPreviousPage= page;
}
/* (non-Javadoc)
* @see org.eclipse.jface.wizard.IWizardPage#setWizard(org.eclipse.jface.wizard.IWizard)
*/
@Override
public void setWizard(IWizard newWizard) {
fWizard= newWizard;
}
}