/******************************************************************************* * Copyright (c) 2011 Subgraph. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Subgraph - initial API and implementation ******************************************************************************/ package com.subgraph.vega.ui.scanner.wizards; import java.util.List; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import com.subgraph.vega.api.scanner.modules.IScannerModule; import com.subgraph.vega.ui.scanner.Activator; import com.subgraph.vega.ui.scanner.modules.ModuleRegistryCheckStateProvider; import com.subgraph.vega.ui.scanner.modules.ModuleRegistryContentProvider; import com.subgraph.vega.ui.scanner.modules.ModuleRegistryLabelProvider; import com.subgraph.vega.ui.util.ImageCache; public class NewScanWizardPage extends WizardPage { private Composite container; private CheckboxTreeViewer viewer; private Text scanTarget; private final String targetValue; private final List<IScannerModule> modules; private final static String VEGA_LOGO = "icons/vega_small.png"; private final ImageCache imageCache = new ImageCache(Activator.PLUGIN_ID); public NewScanWizardPage(String targetValue, List<IScannerModule> modules) { super("Create a New Scan"); setTitle("Create a New Scan"); setDescription("New Scan Parameters"); setImageDescriptor(ImageDescriptor.createFromImage(imageCache.get(VEGA_LOGO))); this.targetValue = targetValue; this.modules = modules; } @Override public void createControl(Composite parent) { container = new Composite(parent, SWT.NULL); Label modulesLabel; GridLayout layout = new GridLayout(); container.setLayout(layout); layout.numColumns = 1; Label label = new Label(container, SWT.NULL); label.setText("Input the base URI:"); scanTarget = new Text(container, SWT.BORDER | SWT.SINGLE); if(targetValue != null) { scanTarget.setText(targetValue); } else { scanTarget.setText(""); } scanTarget.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { setPageComplete(!scanTarget.getText().trim().isEmpty()); } }); modulesLabel = new Label(container, SWT.NULL); modulesLabel.setText("Select the modules to run:"); viewer = new CheckboxTreeViewer(container,SWT.BORDER| SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); final ModuleRegistryCheckStateProvider checkStateProvider = new ModuleRegistryCheckStateProvider(viewer); viewer.setContentProvider(new ModuleRegistryContentProvider(checkStateProvider)); viewer.setLabelProvider(new ModuleRegistryLabelProvider()); viewer.setCheckStateProvider(checkStateProvider); viewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH)); viewer.setInput(modules.toArray(new IScannerModule[0])); viewer.addCheckStateListener(checkStateProvider); GridData gd = new GridData(GridData.FILL_HORIZONTAL); scanTarget.setLayoutData(gd); setControl(container); setPageComplete(!scanTarget.getText().isEmpty()); } public String getScanTarget() { return scanTarget.getText(); } }