| /******************************************************************************* |
| * Copyright (c) 2005 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.bpel.ui.dialogs; |
| |
| import java.text.MessageFormat; |
| |
| import org.eclipse.bpel.model.resource.BPELResourceSetImpl; |
| import org.eclipse.bpel.model.util.BPELUtils; |
| import org.eclipse.bpel.ui.BPELUIPlugin; |
| import org.eclipse.bpel.ui.IBPELUIConstants; |
| import org.eclipse.bpel.ui.Messages; |
| import org.eclipse.bpel.ui.details.providers.ModelLabelProvider; |
| import org.eclipse.bpel.ui.details.providers.ModelTreeLabelProvider; |
| import org.eclipse.bpel.ui.details.providers.PartnerLinkTypeTreeContentProvider; |
| import org.eclipse.bpel.ui.details.providers.VariableTypeTreeContentProvider; |
| import org.eclipse.bpel.ui.details.providers.WSILContentProvider; |
| import org.eclipse.bpel.ui.util.filedialog.FileSelectionGroup; |
| import org.eclipse.bpel.wsil.model.inspection.Description; |
| import org.eclipse.bpel.wsil.model.inspection.Inspection; |
| import org.eclipse.bpel.wsil.model.inspection.Link; |
| import org.eclipse.bpel.wsil.model.inspection.Name; |
| import org.eclipse.bpel.wsil.model.inspection.Service; |
| import org.eclipse.bpel.wsil.model.inspection.TypeOfAbstract; |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IResource; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.core.runtime.jobs.Job; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.jface.dialogs.IDialogSettings; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.jface.resource.JFaceResources; |
| import org.eclipse.jface.viewers.ISelectionChangedListener; |
| import org.eclipse.jface.viewers.IStructuredSelection; |
| import org.eclipse.jface.viewers.ITreeContentProvider; |
| import org.eclipse.jface.viewers.SelectionChangedEvent; |
| import org.eclipse.jface.viewers.TreeViewer; |
| import org.eclipse.jface.viewers.Viewer; |
| import org.eclipse.jface.viewers.ViewerComparator; |
| import org.eclipse.jface.viewers.ViewerFilter; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.KeyEvent; |
| import org.eclipse.swt.events.KeyListener; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| 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.Control; |
| import org.eclipse.swt.widgets.Event; |
| import org.eclipse.swt.widgets.FileDialog; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Listener; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.swt.widgets.Text; |
| import org.eclipse.swt.widgets.Tree; |
| import org.eclipse.ui.dialogs.SelectionStatusDialog; |
| import org.eclipse.ui.part.DrillDownComposite; |
| |
| |
| |
| /** |
| * Browse for complex/simple types available in the process and choose |
| * that simple type. |
| * |
| */ |
| |
| public class SchemaImportDialog extends SelectionStatusDialog { |
| |
| /** Browse local resource */ |
| protected final static int BID_BROWSE_RESOURCE = IDialogConstants.CLIENT_ID + 1; |
| |
| /* Button id for browsing URLs */ |
| protected final static int BID_BROWSE_URL = IDialogConstants.CLIENT_ID + 2; |
| |
| /* Button id for browse files */ |
| protected final static int BID_BROWSE_FILE = IDialogConstants.CLIENT_ID + 3; |
| |
| /* Browse button */ |
| protected static final int BID_BROWSE = IDialogConstants.CLIENT_ID + 4; |
| |
| /* button id for browsing WSIL */ |
| protected static final int BID_BROWSE_WSIL = IDialogConstants.CLIENT_ID + 5; |
| |
| /* The import source setting, remembered in the dialog settings */ |
| private static final String IMPORT_KIND = "ImportKind"; //$NON-NLS-1$ |
| |
| private static final String EMPTY = ""; //$NON-NLS-1$ |
| |
| |
| private String[] FILTER_EXTENSIONS = { IBPELUIConstants.EXTENSION_STAR_DOT_XSD, |
| IBPELUIConstants.EXTENSION_STAR_DOT_WSDL, |
| IBPELUIConstants.EXTENSION_STAR_DOT_ANY}; |
| |
| private String[] FILTER_NAMES = { IBPELUIConstants.EXTENSION_XSD_NAME, |
| IBPELUIConstants.EXTENSION_WSDL_NAME, |
| IBPELUIConstants.EXTENSION_ANY_NAME }; |
| |
| |
| protected EObject modelObject; |
| |
| protected Tree fTree; |
| protected TreeViewer fTreeViewer; |
| |
| Text fLocation; |
| |
| private Composite fLocationComposite; |
| FileSelectionGroup fResourceComposite; |
| |
| // Import from WSIL constructs |
| private Composite fWSILComposite; |
| protected TreeViewer fWSILTreeViewer; |
| protected Tree fWSILTree; |
| protected Text filterText; |
| String fFilter = ""; //$NON-NLS-1$ |
| |
| |
| private Button fBrowseButton; |
| |
| private Group fGroup; |
| |
| private IDialogSettings fSettings ; |
| |
| private int KIND = BID_BROWSE_RESOURCE ; |
| |
| private String fStructureTitle; |
| |
| private ITreeContentProvider fTreeContentProvider; |
| |
| protected Object fInput; |
| |
| protected BPELResourceSetImpl fHackedResourceSet; |
| |
| protected String fResourceKind = IBPELUIConstants.EXTENSION_XSD; |
| |
| long fRunnableStart; |
| URI fRunnableLoadURI; |
| Job fLoaderJob; |
| |
| IPreferenceStore fPrefStore = BPELUIPlugin.getPlugin().getPreferenceStore(); |
| String fBasePath = fPrefStore.getString(IBPELUIConstants.PREF_WSIL_URL); |
| |
| // The WSIL radio box is turned off if the WSIL document is not set in the preferences. |
| Button fBtnWSIL; |
| |
| |
| /** |
| * Create a brand new shiny Schema Import Dialog. |
| * |
| * @param parent |
| */ |
| public SchemaImportDialog (Shell parent) { |
| |
| super(parent); |
| setStatusLineAboveButtons(true); |
| int shellStyle = getShellStyle(); |
| setShellStyle(shellStyle | SWT.MAX | SWT.RESIZE); |
| |
| fSettings = BPELUIPlugin.getPlugin().getDialogSettingsFor( this ); |
| |
| try { |
| KIND = fSettings.getInt(IMPORT_KIND); |
| } catch (java.lang.NumberFormatException nfe) { |
| KIND = BID_BROWSE_RESOURCE; |
| } |
| |
| setDialogBoundsSettings ( fSettings, getDialogBoundsStrategy() ); |
| |
| configureAsSchemaImport(); |
| } |
| |
| /** |
| * Create a brand new shiny Schema Import Dialog |
| * |
| * @param parent shell to use |
| * @param eObject the model object to use as reference |
| */ |
| public SchemaImportDialog (Shell parent, EObject eObject) { |
| this(parent); |
| |
| this.modelObject = eObject; |
| setTitle(Messages.SchemaImportDialog_2); |
| |
| fHackedResourceSet = BPELUtils.slightlyHackedResourceSet(eObject); |
| } |
| |
| |
| /** |
| * |
| * @see Dialog#createDialogArea(Composite) |
| * |
| * @param parent the parent composite to use |
| * @return the composite it created to be used in the dialog area. |
| */ |
| |
| @Override |
| public Control createDialogArea(Composite parent) { |
| |
| Composite contents = (Composite) super.createDialogArea(parent); |
| |
| createImportLocation (contents); |
| createImportStructure (contents); |
| |
| buttonPressed(KIND,true); |
| return contents; |
| } |
| |
| |
| @Override |
| protected void buttonPressed (int buttonId) { |
| switch (buttonId) { |
| case BID_BROWSE : |
| FileDialog fileDialog = new FileDialog(getShell()); |
| fileDialog.setFilterExtensions( FILTER_EXTENSIONS ); |
| fileDialog.setFilterNames( FILTER_NAMES ); |
| String path = fileDialog.open(); |
| if (path == null) { |
| return; |
| } |
| fLocation.setText( path ); |
| attemptLoad ( path ); |
| break; |
| |
| case IDialogConstants.CANCEL_ID : |
| if (fLoaderJob != null) { |
| if (fLoaderJob.getState() == Job.RUNNING) { |
| fLoaderJob.cancel(); |
| } |
| } |
| break; |
| } |
| |
| super.buttonPressed(buttonId); |
| } |
| |
| |
| protected void buttonPressed (int id, boolean checked) { |
| |
| if (id == BID_BROWSE_FILE || id == BID_BROWSE_RESOURCE || id == BID_BROWSE_URL || id == BID_BROWSE_WSIL) { |
| if (checked == false) { |
| return ; |
| } |
| |
| setVisibleControl (fResourceComposite, id == BID_BROWSE_RESOURCE ); |
| setVisibleControl (fLocationComposite , |
| id == BID_BROWSE_URL || id == BID_BROWSE_FILE); |
| |
| setVisibleControl(fWSILComposite, id == BID_BROWSE_WSIL); |
| |
| fBrowseButton.setEnabled( (id == BID_BROWSE_FILE) || (id == BID_BROWSE_WSIL) ); |
| fLocation.setText(EMPTY); |
| |
| markEmptySelection(); |
| KIND = id; |
| |
| fSettings.put(IMPORT_KIND, KIND); |
| |
| fGroup.getParent().layout(true); |
| } |
| |
| } |
| |
| |
| protected void setVisibleControl (Control c, boolean b) { |
| Object layoutData = c.getLayoutData(); |
| |
| if (layoutData instanceof GridData) { |
| GridData data = (GridData) layoutData; |
| data.exclude = ! b; |
| } |
| c.setVisible(b); |
| } |
| |
| |
| /** |
| * Create the dialog. |
| * |
| */ |
| |
| @Override |
| public void create() { |
| super.create(); |
| buttonPressed(KIND, true); |
| } |
| |
| |
| protected Button createRadioButton (Composite parent, String label, int id, boolean checked) { |
| |
| Button button = new Button(parent,SWT.RADIO); |
| button.setText(label); |
| button.setFont(JFaceResources.getDialogFont()); |
| button.setData(new Integer(id)); |
| button.setSelection( checked ); |
| |
| button.addSelectionListener (new SelectionAdapter() { |
| @Override |
| public void widgetSelected (SelectionEvent event) { |
| Button b = (Button) event.widget; |
| int bid = ((Integer) b.getData()).intValue(); |
| |
| buttonPressed(bid, b.getSelection()); |
| } |
| }); |
| |
| return button; |
| |
| } |
| |
| protected void createImportLocation (Composite parent) { |
| |
| fGroup = new Group(parent,SWT.SHADOW_ETCHED_IN); |
| fGroup.setText(Messages.SchemaImportDialog_4); |
| GridLayout layout = new GridLayout(1,true); |
| GridData data = new GridData(); |
| data.grabExcessVerticalSpace = false; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| |
| fGroup.setLayout( layout ); |
| fGroup.setLayoutData( data ); |
| |
| |
| Composite container = new Composite(fGroup, SWT.NONE); |
| |
| layout = new GridLayout(); |
| layout.makeColumnsEqualWidth = true; |
| layout.numColumns = 4; |
| container.setLayout(layout); |
| data = new GridData(); |
| data.grabExcessVerticalSpace = false; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.CENTER; |
| container.setLayoutData(data); |
| |
| createRadioButton(container,Messages.SchemaImportDialog_5, BID_BROWSE_RESOURCE, |
| KIND == BID_BROWSE_RESOURCE ); |
| createRadioButton(container,Messages.SchemaImportDialog_6, BID_BROWSE_FILE, |
| KIND == BID_BROWSE_FILE ); |
| createRadioButton(container,Messages.SchemaImportDialog_7, BID_BROWSE_URL, |
| KIND == BID_BROWSE_URL ); |
| |
| // Add WSIL option |
| fBtnWSIL = createRadioButton(container, Messages.SchemaImportDialog_15, BID_BROWSE_WSIL, |
| KIND == BID_BROWSE_WSIL); |
| |
| |
| // Create location variant |
| fLocationComposite = new Composite(fGroup, SWT.NONE); |
| |
| layout = new GridLayout(); |
| layout.numColumns = 3; |
| fLocationComposite.setLayout(layout); |
| data = new GridData(); |
| data.grabExcessVerticalSpace = true; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| fLocationComposite.setLayoutData(data); |
| |
| Label location = new Label(fLocationComposite,SWT.NONE); |
| location.setText(Messages.SchemaImportDialog_8); |
| |
| fLocation = new Text(fLocationComposite,SWT.BORDER); |
| fLocation.setText(EMPTY); |
| data = new GridData(); |
| data.grabExcessVerticalSpace = false; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| fLocation.setLayoutData(data); |
| fLocation.addListener(SWT.FocusOut, new Listener() { |
| |
| public void handleEvent(Event event) { |
| String loc = fLocation.getText(); |
| if (loc.length() > 0) { |
| attemptLoad( loc ); |
| } |
| } |
| }); |
| fLocation.addKeyListener( new KeyListener () { |
| |
| public void keyPressed(KeyEvent event) { |
| if (event.keyCode == SWT.CR) { |
| attemptLoad(fLocation.getText()); |
| event.doit = false; |
| } |
| } |
| |
| public void keyReleased(KeyEvent e) { |
| return ; |
| } |
| |
| }); |
| |
| |
| fBrowseButton = createButton(fLocationComposite, BID_BROWSE, Messages.SchemaImportDialog_9, false); |
| |
| // End of location variant |
| |
| // Start Resource Variant |
| fResourceComposite = new FileSelectionGroup(fGroup, |
| new Listener() { |
| public void handleEvent(Event event) { |
| IResource resource = fResourceComposite.getSelectedResource(); |
| if (resource != null && resource.getType() == IResource.FILE) { |
| // only attempt to load a resource which is not a container |
| attemptLoad ( (IFile) resource ); |
| return ; |
| } |
| markEmptySelection(); |
| } |
| }, |
| |
| Messages.SchemaImportDialog_10, |
| IBPELUIConstants.EXTENSION_DOT_XSD + "," + IBPELUIConstants.EXTENSION_DOT_WSDL ); //$NON-NLS-1$ |
| |
| |
| TreeViewer viewer = fResourceComposite.getTreeViewer(); |
| viewer.setAutoExpandLevel(2); |
| |
| // End resource variant |
| |
| // create WSIL UI widgets |
| createWSILStructure(fGroup); |
| |
| } |
| |
| protected Object createWSILStructure(Composite parent) { |
| |
| fWSILComposite = new Composite(parent, SWT.NONE); |
| |
| GridLayout layout = new GridLayout(); |
| layout.marginWidth = 0; |
| fWSILComposite.setLayout(layout); |
| |
| GridData data = new GridData(); |
| data.grabExcessVerticalSpace = true; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| data.minimumHeight = 220; |
| fWSILComposite.setLayoutData(data); |
| |
| Label location = new Label(fWSILComposite, SWT.NONE); |
| location.setText( Messages.SchemaImportDialog_16 ); |
| |
| data = new GridData(); |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = SWT.LEFT; |
| location.setLayoutData(data); |
| |
| filterText = new Text(fWSILComposite, SWT.BORDER); |
| data = new GridData(GridData.FILL_HORIZONTAL); |
| filterText.setLayoutData(data); |
| |
| filterText.addKeyListener(new KeyListener() { |
| |
| public void keyPressed(KeyEvent e) { |
| |
| } |
| |
| public void keyReleased(KeyEvent e) { |
| // set the value of the filter. |
| fFilter = filterText.getText().trim().toLowerCase(); |
| |
| if (fFilter.length() > 0) { |
| /* for the time being, only filter 3 levels deep |
| * since link references within WSIL are rare at |
| * this time. when adoption of WSIL directories |
| * take off, this needs to be rehashed */ |
| fWSILTreeViewer.expandToLevel(3); |
| } |
| fWSILTreeViewer.refresh(); |
| e.doit = false; |
| } |
| }); |
| |
| DrillDownComposite wsilTreeComposite = new DrillDownComposite(fWSILComposite, SWT.BORDER); |
| |
| layout = new GridLayout(); |
| layout.marginWidth = 0; |
| layout.marginHeight = 0; |
| layout.verticalSpacing = 0; |
| wsilTreeComposite.setLayout(layout); |
| |
| data = new GridData(); |
| data.grabExcessVerticalSpace = true; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| wsilTreeComposite.setLayoutData(data); |
| |
| // Tree viewer for variable structure ... |
| fWSILTree = new Tree(wsilTreeComposite, SWT.NONE ); |
| data = new GridData(); |
| data.grabExcessVerticalSpace = true; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| data.minimumHeight = 200; |
| fWSILTree.setLayoutData(data); |
| |
| fWSILTreeViewer = new TreeViewer( fWSILTree ); |
| fWSILTreeViewer.setContentProvider( new WSILContentProvider() ); |
| fWSILTreeViewer.setLabelProvider( new ModelLabelProvider() ); |
| |
| Object wsilDoc = attemptLoad(URI.createURI(fBasePath),IBPELUIConstants.EXTENSION_WSIL); |
| fWSILTreeViewer.setInput ( wsilDoc ) ; |
| if (wsilDoc == null || wsilDoc instanceof Throwable ) { |
| fBtnWSIL.setEnabled(false); |
| // that's always available. |
| KIND = BID_BROWSE_RESOURCE; |
| } |
| |
| |
| // set default tree expansion to the 2nd level |
| fWSILTreeViewer.expandToLevel(2); |
| fWSILTreeViewer.addFilter(new TreeFilter()); |
| fWSILTreeViewer.setComparator(new WSILViewerComparator()); |
| |
| wsilTreeComposite.setChildTree(fWSILTreeViewer); |
| |
| |
| fWSILTreeViewer.addSelectionChangedListener(new ISelectionChangedListener() { |
| public void selectionChanged(SelectionChangedEvent event) { |
| // TODO Auto-generated method stub |
| IStructuredSelection sel = (IStructuredSelection)event.getSelection(); |
| if (sel.getFirstElement() instanceof Service) { |
| Service serv = (Service)sel.getFirstElement(); |
| Description descr = (Description)serv.getDescription().get(0); |
| attemptLoad(descr.getLocation() ); |
| } else { |
| markEmptySelection(); |
| } |
| } |
| }); |
| // end tree viewer for variable structure |
| |
| return fWSILComposite; |
| } |
| |
| protected Object createImportStructure (Composite parent) { |
| |
| Label location = new Label(parent,SWT.NONE); |
| location.setText( fStructureTitle ); |
| |
| // Tree viewer for variable structure ... |
| fTree = new Tree(parent, SWT.BORDER ); |
| |
| VariableTypeTreeContentProvider variableContentProvider = new VariableTypeTreeContentProvider(true, true); |
| fTreeViewer = new TreeViewer(fTree); |
| fTreeViewer.setContentProvider( fTreeContentProvider != null ? fTreeContentProvider : variableContentProvider ); |
| fTreeViewer.setLabelProvider(new ModelTreeLabelProvider()); |
| fTreeViewer.setInput ( null ); |
| fTreeViewer.setAutoExpandLevel(3); |
| // end tree viewer for variable structure |
| GridData data = new GridData(); |
| data.grabExcessVerticalSpace = true; |
| data.grabExcessHorizontalSpace = true; |
| data.horizontalAlignment = GridData.FILL; |
| data.verticalAlignment = GridData.FILL; |
| data.minimumHeight = 200; |
| fTree.setLayoutData(data); |
| |
| return fTree; |
| } |
| |
| |
| Object attemptLoad ( URI uri, String kind) { |
| |
| Resource resource = null; |
| try { |
| resource = fHackedResourceSet.getResource(uri, true, kind); |
| } catch (Throwable t) { |
| // BPELUIPlugin.log(t); |
| return t; |
| } |
| |
| if (resource.getErrors().isEmpty() && resource.isLoaded() ) { |
| return resource.getContents().get(0); |
| } |
| return null; |
| } |
| |
| Object attemptLoad ( URI uri ) { |
| return attemptLoad (uri, fResourceKind ); |
| } |
| |
| |
| void attemptLoad ( IFile file ) { |
| attemptLoad ( file.getFullPath().toString() ); |
| } |
| |
| |
| void attemptLoad ( String path ) { |
| |
| if (fLoaderJob != null) { |
| if (fLoaderJob.getState() == Job.RUNNING) { |
| fLoaderJob.cancel(); |
| } |
| } |
| |
| updateStatus ( Status.OK_STATUS ); |
| |
| // empty paths are ignored |
| if (path.length() == 0) { |
| return ; |
| } |
| |
| |
| URI uri = convertToURI ( path ); |
| if (uri == null) { |
| return ; |
| } |
| |
| |
| if (uri.isRelative()) { |
| // construct absolute path |
| String absolutepath = fBasePath.substring(0, fBasePath.lastIndexOf('/')+1) + path; |
| uri = URI.createURI(absolutepath); |
| } |
| |
| |
| |
| fRunnableLoadURI = uri; |
| final String msg = MessageFormat.format(Messages.SchemaImportDialog_17,fRunnableLoadURI); |
| fLoaderJob = new Job(msg) { |
| |
| @Override |
| protected IStatus run(IProgressMonitor monitor) { |
| monitor.beginTask(msg, 1); |
| |
| fInput = attemptLoad(fRunnableLoadURI); |
| monitor.worked(1); |
| |
| fTree.getDisplay().asyncExec(new Runnable() { |
| public void run() { |
| loadDone(); |
| } |
| }); |
| return Status.OK_STATUS; |
| } |
| }; |
| |
| fLoaderJob.schedule(); |
| fRunnableStart = System.currentTimeMillis(); |
| |
| |
| updateStatus ( new Status(IStatus.INFO, BPELUIPlugin.getPlugin().getID(),0,msg,null)); |
| } |
| |
| |
| |
| @SuppressWarnings("boxing") |
| void loadDone () { |
| |
| |
| if (fBrowseButton.isDisposed()) { |
| // we were closed before this is being called. Quit. |
| return ; |
| } |
| |
| long elapsed = System.currentTimeMillis() - fRunnableStart; |
| |
| if (fInput == null || fInput instanceof Throwable) { |
| markEmptySelection(); |
| |
| updateStatus( new Status(IStatus.ERROR,BPELUIPlugin.getPlugin().getID(),0, |
| MessageFormat.format(Messages.SchemaImportDialog_19,fRunnableLoadURI,elapsed),(Throwable) fInput) ); |
| fInput = null; |
| |
| } else { |
| |
| updateStatus ( new Status(IStatus.INFO, BPELUIPlugin.getPlugin().getID(),0, |
| MessageFormat.format(Messages.SchemaImportDialog_18,fRunnableLoadURI,elapsed),null)) ; |
| |
| fTreeViewer.setInput(fInput); |
| fTree.getVerticalBar().setSelection(0); |
| } |
| } |
| |
| |
| |
| void markEmptySelection () { |
| updateStatus ( Status.OK_STATUS ); |
| updateOK(false); |
| fTreeViewer.setInput(null); |
| } |
| |
| |
| private URI convertToURI (String path ) { |
| |
| try { |
| switch (KIND) { |
| case BID_BROWSE_FILE : |
| return URI.createFileURI( path ); |
| |
| case BID_BROWSE_RESOURCE : |
| return URI.createPlatformResourceURI(path); |
| |
| case BID_BROWSE_WSIL : |
| //return URI.createFileURI( path ); |
| case BID_BROWSE_URL : |
| return URI.createURI(path); |
| |
| |
| |
| default : |
| return null; |
| } |
| |
| } catch (Exception ex) { |
| updateStatus ( new Status(IStatus.ERROR,BPELUIPlugin.getPlugin().getID(),0,Messages.SchemaImportDialog_13,ex) ); |
| return null; |
| } |
| } |
| |
| /** |
| * Update the state of the OK button to the state indicated. |
| * |
| * @param state false to disable, true to enable. |
| */ |
| |
| public void updateOK ( boolean state ) { |
| Button okButton = getOkButton(); |
| if (okButton != null && !okButton.isDisposed()) { |
| okButton.setEnabled(state); |
| } |
| } |
| |
| /** |
| * @see org.eclipse.ui.dialogs.SelectionStatusDialog#computeResult() |
| */ |
| |
| @Override |
| protected void computeResult() { |
| Object object = fTreeViewer.getInput(); |
| if (object == null) { |
| return ; |
| } |
| setSelectionResult(new Object[]{ object }); |
| } |
| |
| |
| /** |
| * Configure the dialog as a schema import dialog. Set the title and |
| * the structure pane message. |
| * |
| */ |
| |
| public void configureAsSchemaImport ( ) { |
| setTitle(Messages.SchemaImportDialog_2); |
| fStructureTitle = Messages.SchemaImportDialog_11; |
| fResourceKind = IBPELUIConstants.EXTENSION_XSD; |
| } |
| |
| /** |
| * Configure the dialog as a WSDL import dialog. Set the title and |
| * the structure pane message. |
| * |
| */ |
| |
| public void configureAsWSDLImport ( ) { |
| |
| setTitle(Messages.SchemaImportDialog_0); |
| fStructureTitle = Messages.SchemaImportDialog_14; |
| fTreeContentProvider = new PartnerLinkTypeTreeContentProvider(true); |
| fResourceKind = IBPELUIConstants.EXTENSION_WSDL; |
| } |
| |
| |
| |
| /** |
| * |
| * @author Michal Chmielewski (michal.chmielewski@oracle.com) |
| * @date May 4, 2007 |
| * |
| */ |
| public class TreeFilter extends ViewerFilter { |
| |
| /** (non-Javadoc) |
| * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) |
| */ |
| @Override |
| public boolean select (Viewer viewer, Object parentElement, Object element) { |
| |
| if (fFilter == null || fFilter.length() == 0) { |
| return true; |
| } |
| |
| if (element instanceof Service) { |
| String text = ""; //$NON-NLS-1$ |
| Service service = (Service)element; |
| if (service.getName().size() > 0) { |
| Name name = (Name)service.getName().get(0); |
| text += name.getValue(); |
| } |
| if (service.getAbstract().size() > 0) { |
| TypeOfAbstract abst = (TypeOfAbstract)service.getAbstract().get(0); |
| text += abst.getValue(); |
| } |
| return (text.toLowerCase().indexOf(fFilter) > -1); |
| } |
| |
| return true; |
| } |
| } |
| |
| |
| /** |
| * |
| * @author Michal Chmielewski (michal.chmielewski@oracle.com) |
| * @date May 10, 2007 |
| * |
| */ |
| public class WSILViewerComparator extends ViewerComparator { |
| |
| /** |
| * @see org.eclipse.jface.viewers.ViewerComparator#category(java.lang.Object) |
| */ |
| @Override |
| public int category(Object element) { |
| if (element instanceof Inspection) |
| return 1; |
| if (element instanceof Link) |
| return 2; |
| if (element instanceof Service) |
| return 3; |
| |
| return 0; |
| } |
| } |
| } |