/*
* ARX: Powerful Data Anonymization
* Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.deidentifier.arx.gui.view.impl.wizard;
import java.util.Arrays;
import org.deidentifier.arx.gui.view.impl.wizard.ARXWizardDialog.ARXWizardButton;
import org.eclipse.jface.window.Window;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Shell;
/**
* This class implements an abstract base class for wizards.
*
* @author Fabian Prasser
* @param <T>
*/
public abstract class ARXWizard<T> extends Wizard implements IWizard {
/** Var. */
private ARXWizardDialog dialog;
/** Var. */
private ARXWizardButton[] buttons;
/** Var. */
private final Point pageSize;
/**
* Creates a new instance.
*/
protected ARXWizard() {
this.pageSize = null;
this.buttons = null;
}
/**
* Creates a new instance with given page size.
*
* @param pageSize
*/
protected ARXWizard(Point pageSize) {
this.pageSize = pageSize;
this.buttons = null;
}
/**
* Returns the result.
*
* @return
*/
public abstract T getResult();
/**
* Opens the dialog.
*
* @param shell
* @return OK pressed
*/
public boolean open(final Shell shell) {
if (buttons != null){
this.dialog = new ARXWizardDialog(shell, this, Arrays.asList(buttons));
} else {
this.dialog = new ARXWizardDialog(shell, this);
}
if (pageSize != null) this.dialog.setPageSize(pageSize);
return dialog.open() == Window.OK;
}
@Override
public boolean performFinish() {
return true;
}
/**
* Returns the button created for the given specification.
*
* @param button
* @return
*/
protected Button getButton(ARXWizardButton button){
if (dialog == null) return null;
else return dialog.getButton(button);
}
/**
* Returns the associated dialog.
*
* @return
*/
protected ARXWizardDialog getDialog(){
return dialog;
}
/**
* Sets the buttons.
*
* @param buttons
*/
protected void setButtons(ARXWizardButton... buttons){
this.buttons = buttons;
}
}