package net.sf.eclipsefp.haskell.ui.internal.editors.cabal.forms;
import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescription;
import org.eclipse.core.resources.IProject;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
public abstract class CabalFormPage extends FormPage {
PackageDescription packageDescription = null;
boolean isLoaded = false;
protected IProject project;
public CabalFormPage( final FormEditor editor, final String id,
final String title, final IProject project ) {
super( editor, id, title );
this.project = project;
}
protected boolean isLoaded() {
return this.isLoaded;
}
protected void finishedLoading() {
if (packageDescription != null) {
setPackageDescriptionInternal( packageDescription );
}
this.isLoaded = true;
}
protected abstract void setPackageDescriptionInternal(
final PackageDescription packageDescription );
public void setPackageDescription( final PackageDescription packageDescription ) {
this.packageDescription = packageDescription;
if( isLoaded() ) {
setPackageDescriptionInternal( packageDescription );
}
}
protected PackageDescription getPackageDescription() {
return this.packageDescription;
}
protected GridLayout createGridLayout( final int cols, final int sideMargin,
final int topMargin ) {
GridLayout layout = new GridLayout( cols, true );
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.marginTop = topMargin;
layout.marginBottom = topMargin;
layout.marginLeft = sideMargin;
layout.marginRight = sideMargin;
layout.horizontalSpacing = 8; // 15;
layout.verticalSpacing = 8; // 12;
return layout;
}
protected GridLayout createUnequalGridLayout( final int cols, final int sideMargin,
final int topMargin ) {
GridLayout layout = new GridLayout( cols, false );
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.marginTop = topMargin;
layout.marginBottom = topMargin;
layout.marginLeft = sideMargin;
layout.marginRight = sideMargin;
layout.horizontalSpacing = 20;
layout.verticalSpacing = 17;
return layout;
}
}