123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- ///////////////////////////////////////////////////////////////////////////
- // Copyright (c) 2016 Intel Corporation. //
- // //
- // 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: //
- // Intel Corporation - initial implementation and documentation //
- ///////////////////////////////////////////////////////////////////////////
- package com.intel.sgx.dialogs;
- import java.io.InputStream;
- import java.util.Scanner;
- import org.eclipse.core.resources.IContainer;
- import org.eclipse.core.resources.IFile;
- import org.eclipse.core.resources.IProject;
- import org.eclipse.core.resources.IResource;
- import org.eclipse.core.resources.ResourcesPlugin;
- import org.eclipse.core.runtime.IAdaptable;
- import org.eclipse.core.runtime.IPath;
- import org.eclipse.core.runtime.IStatus;
- import org.eclipse.core.runtime.Status;
- import org.eclipse.jface.dialogs.Dialog;
- import org.eclipse.jface.viewers.IStructuredSelection;
- import org.eclipse.jface.window.IShellProvider;
- 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.widgets.Button;
- import org.eclipse.swt.widgets.Composite;
- import org.eclipse.swt.widgets.Group;
- import org.eclipse.swt.widgets.Label;
- import org.eclipse.swt.widgets.Shell;
- import org.eclipse.swt.widgets.Text;
- import org.eclipse.ui.IWorkbenchWindow;
- import org.eclipse.ui.PlatformUI;
- import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog;
- import com.intel.sgx.Activator;
- public abstract class SGXDialogBase extends Dialog {
- protected Shell shell;
- public Text configFileField;
- public static FilteredResourcesSelectionDialog dialogForConfig(Shell shell) {
- // final IContainer container = ResourcesPlugin.getWorkspace().getRoot();
-
- final IContainer container = SGXDialogBase.getCurrentProject();
- FilteredResourcesSelectionDialog d = new FilteredResourcesSelectionDialog(
- shell, false, container, IResource.FILE) {
- {
- setInitialPattern("**");
- }
- @Override
- protected IStatus validateItem(Object item) {
- // return Status.OK_STATUS;
- IFile f = (IFile) item;
- if (f.getParent() instanceof IProject) {
- return new Status(IStatus.ERROR, Activator.PLUGIN_ID,
- "The selected resource has to be part of the source folder");
- }
-
-
- return super.validateItem(item);
- }
- protected ItemsFilter createFilter() {
- return new ResourceFilter(container, true, IResource.FILE) {
- @Override
- public boolean matchItem(Object item) {
- return isConfigFile(item);
- }
- private boolean isConfigFile(Object item) {
- if (!(item.toString().endsWith(".xml") && super
- .matchItem(item))) {
- return false;
- }
- try {
- IFile iFile = (IFile) item;
- return streamContainsString(iFile.getContents(),
- "<EnclaveConfiguration>");
- } catch (Throwable e) {
- return false;
- }
- }
- };
- }
- public boolean streamContainsString(InputStream is,
- String searchString) {
- Scanner streamScanner = new Scanner(is);
- if (streamScanner.findWithinHorizon(searchString, 0) != null) {
- return true;
- } else {
- return false;
- }
- }
- };
- return d;
- }
-
- protected SelectionListener configFileSelectionListener = new SelectionListener() {
- @Override
- public void widgetSelected(SelectionEvent event) {
-
- FilteredResourcesSelectionDialog d = dialogForConfig(shell);
- d.setTitle("Select Config File");
- if (d.open() == Dialog.OK) {
- IFile target = (IFile) d.getResult()[0];
- configFileField.setText(target.getLocation().toOSString());
- }
- ;
- }
-
- @Override
- public void widgetDefaultSelected(SelectionEvent arg0) {
- // TODO Auto-generated method stub
-
- }
-
- };
- public SGXDialogBase(Shell parentShell) {
- super(parentShell);
- }
- public SGXDialogBase(IShellProvider parentShell) {
- super(parentShell);
- }
- protected Text addGroup(Composite composite, String title, String subtitle,
- String label, String selectButtonLabel, SelectionListener selectionListener) {
- final Group container = new Group(composite, SWT.None);
- container.setLayout(new GridLayout(3, false));
- GridData innergrid1 = new GridData(GridData.FILL_HORIZONTAL);
- innergrid1.horizontalSpan = 3;
- container.setLayoutData(innergrid1);
- container.setText(title);
-
- final Label messageLabel = new Label(container, SWT.NONE);
- messageLabel.setLayoutData(new GridData(GridData.BEGINNING,
- GridData.CENTER, false, false, 3, 1));
- messageLabel.setText(subtitle);
-
- final Label messageLabel1 = new Label(container, SWT.NONE);
- messageLabel1.setText(label);
- messageLabel1.setLayoutData(new GridData(GridData.BEGINNING));
-
- Text directoryNameField = new Text(container, SWT.SINGLE | SWT.BORDER);
- GridData gridData = new GridData(GridData.FILL_HORIZONTAL);
- gridData.horizontalSpan = 1;
- gridData.widthHint = 400;
- directoryNameField.setLayoutData(gridData);
-
- final Button selectButton = new Button(container, SWT.PUSH);
- selectButton.setText(selectButtonLabel);
- GridData buttonGridData = new GridData(GridData.END);
- buttonGridData.horizontalAlignment = SWT.RIGHT;
- buttonGridData.horizontalSpan = 1;
- buttonGridData.minimumWidth = 120;
- selectButton.setLayoutData(buttonGridData);
- selectButton.addSelectionListener(selectionListener);
- return directoryNameField;
- }
-
- public IPath getCurrentProjectPath() {
- IProject project = getCurrentProject();
-
- IPath path = null;
- if (project != null) {
- path = project.getLocation();
- }
- return path;
- }
- static public IProject getCurrentProject() {
- IProject project = null;
-
- IWorkbenchWindow window = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow();
- if (window != null) {
- IStructuredSelection selection = (IStructuredSelection) window
- .getSelectionService().getSelection();
- Object firstElement = selection.getFirstElement();
- if (firstElement instanceof IAdaptable) {
- project = (IProject) ((IAdaptable) firstElement)
- .getAdapter(IProject.class);
- }
- }
- return project;
- }
-
- @Override
- protected void configureShell(Shell newShell){
- super.configureShell(newShell);
- }
- protected void addLabel(final Group container, String labelText) {
- final Label messageLabel = new Label(container, SWT.NONE);
- messageLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false, 3, 1));
- messageLabel.setText(labelText);
- }
- }
|