/** * Copyright (C) Intersect 2012. * * This module contains Proprietary Information of Intersect, * and should be treated as Confidential. */ package au.org.intersect.exsite9.wizard.listexcludedfiles; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.RowLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import au.org.intersect.exsite9.domain.ResearchFile; /** * Excluded Files wizard page 1. */ public final class ListExcludedFilesWizardPage1 extends WizardPage implements SelectionListener { private final List<ResearchFile> excludedFiles; private final List<ResearchFile> excludedFilesToInclude = new ArrayList<ResearchFile>(); private org.eclipse.swt.widgets.List excludedFilesList; private Button removeButton; /** * Constructor * @param excludedFiles The list of currently excluded files. */ public ListExcludedFilesWizardPage1(final List<ResearchFile> excludedFiles) { super("Excluded Files"); setTitle("Excluded Files"); setDescription("These are files that have been excluded from the project."); this.excludedFiles = excludedFiles; } /** * @{inheritDoc} */ @Override public void createControl(final Composite parent) { final Composite container = new Composite(parent, SWT.NULL); final GridLayout layout = new GridLayout(); layout.numColumns = 2; container.setLayout(layout); this.excludedFilesList = new org.eclipse.swt.widgets.List(container, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL); for (final ResearchFile rf : this.excludedFiles) { this.excludedFilesList.add(rf.getFile().getAbsolutePath()); } final GridData multiLineGridData = new GridData(GridData.FILL_BOTH); this.excludedFilesList.setLayoutData(multiLineGridData); Composite rowComp = new Composite(container, SWT.NULL); final RowLayout rowLayout = new RowLayout(); rowLayout.type = SWT.VERTICAL; rowLayout.pack = false; rowLayout.justify = true; rowComp.setLayout(rowLayout); this.removeButton = new Button(rowComp, SWT.PUSH); this.removeButton.setText("Reinclude"); this.removeButton.addSelectionListener(this); this.removeButton.setEnabled(false); this.excludedFilesList.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(final SelectionEvent e) { removeButton.setEnabled(excludedFilesList.getSelectionCount() > 0); } @Override public void widgetDefaultSelected(final SelectionEvent e) { } }); setControl(container); setPageComplete(false); } @Override public void widgetSelected(final SelectionEvent event) { if (this.excludedFilesList.getSelectionCount() == 0) { return; } while (this.excludedFilesList.getSelectionCount() > 0) { final int selectedIndex = this.excludedFilesList.getSelectionIndex(); final ResearchFile selectedResearchFile = this.excludedFiles.remove(selectedIndex); this.excludedFilesToInclude.add(selectedResearchFile); this.excludedFilesList.remove(selectedIndex); } this.setPageComplete(true); this.removeButton.setEnabled(excludedFilesList.getSelectionCount() > 0); } @Override public void widgetDefaultSelected(final SelectionEvent event) { } public List<ResearchFile> getExcludedFilesToInclude() { return this.excludedFilesToInclude; } }