package org.bundlemaker.core.ui.preferences;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* <p>
* </p>
*
* <p>
* This source was copied (and than modified) from the internal class
* {@link org.eclipse.jdt.internal.ui.preferences.PropertyAndPreferencePage}.
* </p>
*/
public abstract class ConfigurationBlock extends Composite {
/** - */
private AbstractPropertyAndPreferencesPage _page;
/**
* <p>
* </p>
*
* @param parent
* @param style
*/
public ConfigurationBlock(Composite parent, int style, AbstractPropertyAndPreferencesPage page) {
super(parent, style);
//
Assert.isNotNull(page);
//
_page = page;
createContent();
}
/**
* <p>
* </p>
*
* @param configurationBlock
*/
protected abstract void createContent();
/**
* <p>
* </p>
*
* @return
*/
public AbstractPropertyAndPreferencesPage getPage() {
return _page;
}
/**
* <p>
* </p>
*
*/
public abstract void performDefaults();
protected abstract String[] getPreferenceKeys();
/**
* <p>
* </p>
*
*/
public abstract void initialize();
/**
* <p>
* </p>
*
* @return
*/
public abstract boolean performOk();
/**
* <p>
* </p>
*
* @return
*/
public boolean performApply() {
return performOk();
}
/**
* <p>
* </p>
*
* @return
*/
public boolean performCancel() {
return true;
}
/**
* <p>
* </p>
*/
public void performHelp() {
//
}
/**
* <p>
* </p>
*
* @param project
* @return
*/
public boolean hasProjectSpecificOptions(IProject project) {
//
IEclipsePreferences eclipsePreferences = new ProjectScope(project).getNode(getPage().getStoreIdentifier());
for (String string : getPreferenceKeys()) {
if (eclipsePreferences.get(string, null) != null) {
return true;
}
}
//
return false;
}
/**
* Creates a composite that contains buttons for selecting the preference opening new project selections.
*/
protected RadioGroupDialogField createRadioGroup(Composite parent, String label, String[] names, Object[] values,
int layoutType) {
//
return new RadioGroupDialogField(parent, label, names, values, layoutType);
}
protected Text createLabelTextField(Composite parent, String label, int textFieldWidrg) {
//
Assert.isNotNull(parent);
Assert.isNotNull(label);
//
Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
composite.setLayout(layout);
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.horizontalAlignment = GridData.FILL;
composite.setLayoutData(data);
//
Label pathLabel = new Label(composite, SWT.NONE);
pathLabel.setText(label);
Text result =
new Text(composite, SWT.SINGLE | SWT.BORDER);
GridData gd = new GridData();
gd.widthHint =
getPage().convertWidthInCharsToPixels(textFieldWidrg);
result.setLayoutData(gd);
//
return result;
}
}