package org.erlide.ui.properties;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.preference.PathEditor;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.erlide.util.PreferencesUtils;
public class ProjectPathEditor extends PathEditor {
private final IProject project;
private final String dirChooserLabelText;
public ProjectPathEditor(final String name, final String labelText,
final String dirChooserLabelText, final Composite parent,
final IProject project) {
super(name, labelText, dirChooserLabelText, parent);
this.dirChooserLabelText = dirChooserLabelText;
this.project = project;
}
@Override
protected String getNewInputObject() {
final IContainer container = DirectorySelectUtil.chooseLocation(
dirChooserLabelText, getLabelText(), project, null, getShell());
if (container != null) {
return container.getProjectRelativePath().toString();
}
return null;
}
@Override
protected String createList(final String[] items) {
return PreferencesUtils.packArray(items);
}
@Override
protected String[] parseString(final String stringList) {
final String[] result = PreferencesUtils.unpackArray(stringList);
for (int i = 0; i < result.length; i++) {
result[i] = result[i].trim();
}
return result;
}
@Override
protected void doFillIntoGrid(final Composite parent, final int numColumns) {
super.doFillIntoGrid(parent, numColumns);
final org.eclipse.swt.widgets.List list = getListControl(parent);
final GridData gd = (GridData) list.getLayoutData();
gd.heightHint = 100;
}
}