/*
* 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 org.deidentifier.arx.AttributeType.Hierarchy;
import org.deidentifier.arx.gui.resources.Resources;
import org.deidentifier.arx.gui.view.SWTUtil;
import org.deidentifier.arx.gui.view.impl.common.ComponentHierarchy;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.List;
/**
* The final page that shows an overview of the resulting hierarchy.
*
* @author Fabian Prasser
* @param <T>
*/
public class HierarchyWizardPageFinal<T> extends WizardPage{
/** Var. */
private final HierarchyWizard<T> wizard;
/** Var. */
private Composite composite;
/** Var. */
private List list;
/** Var. */
private ComponentHierarchy view;
/** Var. */
private int[] groups;
/** Var. */
private Hierarchy hierarchy;
/**
* Creates a new instance.
*
* @param wizard
*/
public HierarchyWizardPageFinal(final HierarchyWizard<T> wizard) {
super(""); //$NON-NLS-1$
this.wizard = wizard;
setTitle(Resources.getMessage("HierarchyWizardPageFinal.1")); //$NON-NLS-1$
setDescription(Resources.getMessage("HierarchyWizardPageFinal.2")); //$NON-NLS-1$
setPageComplete(true);
}
@Override
public boolean canFlipToNextPage() {
return isPageComplete();
}
@Override
public void createControl(final Composite parent) {
composite = new Composite(parent, SWT.NONE);
composite.setLayout(SWTUtil.createGridLayout(2, false));
final Group center = new Group(composite, SWT.SHADOW_ETCHED_IN);
center.setText(Resources.getMessage("HierarchyWizardPageFinal.3")); //$NON-NLS-1$
center.setLayoutData(SWTUtil.createFillVerticallyGridData());
center.setLayout(SWTUtil.createGridLayout(1, false));
Composite base = new Composite(center, SWT.NONE);
base.setLayoutData(SWTUtil.createFillGridData());
base.setLayout(SWTUtil.createGridLayout(1, false));
list = new List(base, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE);
list.setLayoutData(SWTUtil.createFillGridData());
final Group right = new Group(composite, SWT.SHADOW_ETCHED_IN);
right.setText(Resources.getMessage("HierarchyWizardPageFinal.4")); //$NON-NLS-1$
right.setLayoutData(SWTUtil.createFillGridData());
right.setLayout(SWTUtil.createGridLayout(1, false));
view = new ComponentHierarchy(right);
setControl(composite);
}
@Override
public boolean isPageComplete() {
return false;
}
/**
* Sets the groups.
*
* @param groups
*/
public void setGroups(int[] groups){
this.groups = groups;
}
/**
* Sets the hierarchy.
*
* @param hierarchy
*/
public void setHierarchy(Hierarchy hierarchy){
this.hierarchy = hierarchy;
}
@Override
public void setVisible(boolean value){
if (value) {
this.composite.setRedraw(false);
// Reset
list.removeAll();
this.view.setHierarchy(Hierarchy.create());
if (groups != null) {
for (int count : groups){
list.add(String.valueOf(count));
}
}
if (hierarchy != null) {
view.setHierarchy(hierarchy);
}
this.composite.layout(true);
this.composite.setRedraw(true);
// Deactivate buttons
Button load = this.wizard.getLoadButton();
if (load != null) load.setEnabled(false);
Button save = this.wizard.getSaveButton();
if (save != null) save.setEnabled(false);
}
super.setVisible(value);
}
}