/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.modelgenerator.wsdl.ui.wizards.soap.panels; import java.util.ArrayList; import java.util.Properties; 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.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.datatools.connectivity.IConnectionProfile; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.teiid.core.designer.event.IChangeListener; import org.teiid.core.designer.event.IChangeNotifier; import org.teiid.designer.core.ModelerCore; import org.teiid.designer.core.workspace.DotProjectUtils; import org.teiid.designer.core.workspace.ModelResource; import org.teiid.designer.core.workspace.ModelUtil; import org.teiid.designer.core.workspace.ModelWorkspaceException; import org.teiid.designer.core.workspace.ModelWorkspaceItem; import org.teiid.designer.core.workspace.ModelWorkspaceManager; import org.teiid.designer.datatools.connection.ConnectionInfoHelper; import org.teiid.designer.datatools.connection.IConnectionInfoHelper; import org.teiid.designer.modelgenerator.wsdl.ui.Messages; import org.teiid.designer.modelgenerator.wsdl.ui.ModelGeneratorWsdlUiConstants; import org.teiid.designer.modelgenerator.wsdl.ui.wizards.WSDLImportWizardManager; import org.teiid.designer.transformation.ui.UiConstants; import org.teiid.designer.transformation.ui.wizards.file.FlatFileRelationalModelFactory; import org.teiid.designer.ui.common.util.WidgetFactory; import org.teiid.designer.ui.common.util.WidgetUtil; import org.teiid.designer.ui.explorer.ModelExplorerContentProvider; import org.teiid.designer.ui.explorer.ModelExplorerLabelProvider; import org.teiid.designer.ui.viewsupport.DesignerPropertiesUtil; import org.teiid.designer.ui.viewsupport.ModelIdentifier; import org.teiid.designer.ui.viewsupport.ModelProjectSelectionStatusValidator; import org.teiid.designer.ui.viewsupport.ModelResourceSelectionValidator; import org.teiid.designer.ui.viewsupport.ModelUtilities; import org.teiid.designer.ui.viewsupport.ModelWorkspaceViewerFilter; import org.teiid.designer.ui.viewsupport.ModelingResourceFilter; /** * @since 8.0 */ public class ImportOptionsPanel implements IChangeListener, ModelGeneratorWsdlUiConstants { // Source Model Definition private Text sourceModelFileText; private Text sourceModelContainerText; private Text sourceModelHelpText; // View Model Definition private Text viewModelFileText; private Text viewModelContainerText; private Text viewModelHelpText; private Combo projectCombo; private IConnectionInfoHelper connectionInfoHelper; private final WSDLImportWizardManager importManager; private ModelWorkspaceManager modelWorkspaceManager = ModelWorkspaceManager.getModelWorkspaceManager(); ModelingResourceFilter locationFilter = new ModelingResourceFilter(); private boolean refreshing = false; public ImportOptionsPanel(Composite parent, WSDLImportWizardManager importManager) { super(); this.importManager = importManager; this.importManager.addChangeListener(this); init(parent); } @SuppressWarnings("unused") private void init(Composite parent) { this.connectionInfoHelper = new ConnectionInfoHelper(); PROJECT_INFO: { // ============ Target Project Selection Panel ===================== Group projectGroup = WidgetFactory.createGroup(parent, Messages.TargetProject, SWT.NONE, 1, 2); //$NON-NLS-1$ projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); ((GridData)projectGroup.getLayoutData()).widthHint = 400; Label label = new Label(projectGroup, SWT.NONE); label.setText(Messages.SelectOpenModelProject); final ILabelProvider srcLabelProvider = new LabelProvider() { @Override public String getText(final Object project) { return ((IProject) project).getName(); } }; this.projectCombo = WidgetFactory.createCombo(projectGroup, SWT.READ_ONLY, GridData.FILL_HORIZONTAL, (ArrayList<IProject>) DotProjectUtils.getOpenModelProjects(), null, // this.src, srcLabelProvider, true); GridDataFactory.fillDefaults().grab(true, false).applyTo(projectCombo); if( this.importManager.getTargetProject() != null ) { String projName = this.importManager.getTargetProject().getName(); int count = 0; int index = -1; for( String item : this.projectCombo.getItems()) { if( item.equals(projName) ) { index = count; } else { count++; } } if( index > -1 ) { this.projectCombo.select(index); } } this.projectCombo.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent e) { IProject proj = getProject(new Path(projectCombo.getText())); boolean changed = importManager.setTargetProject(proj); if( changed ) { sourceModelContainerText.setText(importManager.getSourceModelLocation().getFullPath().makeRelative().toString()); viewModelContainerText.setText(importManager.getSourceModelLocation().getFullPath().makeRelative().toString()); } } @Override public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } }); } SOURCE_MODEL_INFO : { Group group = WidgetFactory.createGroup(parent, Messages.SourceModelDefinition, GridData.FILL_HORIZONTAL, 1, 3); ((GridData)group.getLayoutData()).widthHint = 400; Label locationLabel = new Label(group, SWT.NULL); locationLabel.setText(Messages.Location); this.sourceModelContainerText = new Text(group, SWT.BORDER | SWT.SINGLE); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); this.sourceModelContainerText.setLayoutData(gridData); WidgetUtil.colorizeWidget(this.sourceModelContainerText, WidgetUtil.TEXT_COLOR_BLUE, true); this.sourceModelContainerText.setEditable(false); Button browseButton = new Button(group, SWT.PUSH); gridData = new GridData(); browseButton.setLayoutData(gridData); browseButton.setText(Messages.BrowseElipsis); browseButton.setToolTipText(NLS.bind(Messages.BrowseToSelectModelsLocation, Messages.Source_lower)); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleSourceModelLocationBrowse(); } }); Label fileLabel = new Label(group, SWT.NULL); fileLabel.setText(Messages.Name); fileLabel.setToolTipText(Messages.SourceNameTooltip); this.sourceModelFileText = new Text(group, SWT.BORDER | SWT.SINGLE); gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.widthHint = 200; this.sourceModelFileText.setLayoutData(gridData); this.sourceModelFileText.setToolTipText(Messages.SourceNameTooltip); WidgetUtil.colorizeWidget(this.sourceModelFileText, WidgetUtil.TEXT_COLOR_BLUE, false); this.sourceModelFileText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { // Check view file name for existing if "location" is already // set handleSourceModelTextChanged(); } }); browseButton = new Button(group, SWT.PUSH); gridData = new GridData(); browseButton.setLayoutData(gridData); browseButton.setText(Messages.BrowseElipsis); browseButton.setToolTipText(NLS.bind(Messages.BrowseToSelect_0_Model, Messages.Source_lower)); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleSourceModelBrowse(); } }); SOURCE_HELP : { Group helpGroup = WidgetFactory.createGroup(group, Messages.Status, SWT.NONE | SWT.BORDER_DASH, 3); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; helpGroup.setLayoutData(gd); sourceModelHelpText = new Text(helpGroup, SWT.WRAP | SWT.READ_ONLY); WidgetUtil.colorizeWidget(this.sourceModelHelpText, WidgetUtil.TEXT_COLOR_BLUE, true); gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 40; gd.widthHint = 300; sourceModelHelpText.setLayoutData(gd); } } VIEW_MODEL_INFO : { Group group = WidgetFactory.createGroup(parent, Messages.ViewModelDefinition, GridData.FILL_HORIZONTAL, 1, 3); Label locationLabel = new Label(group, SWT.NULL); locationLabel.setText(Messages.Location); this.viewModelContainerText = new Text(group, SWT.BORDER | SWT.SINGLE); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); this.viewModelContainerText.setLayoutData(gridData); WidgetUtil.colorizeWidget(this.viewModelContainerText, WidgetUtil.TEXT_COLOR_BLUE, true); this.viewModelContainerText.setEditable(false); Button browseButton = new Button(group, SWT.PUSH); gridData = new GridData(); // buttonGridData.horizontalAlignment = GridData.HORIZONTAL_ALIGN_END; browseButton.setLayoutData(gridData); browseButton.setText(Messages.BrowseElipsis); browseButton.setToolTipText(NLS.bind(Messages.BrowseToSelectModelsLocation, Messages.Source_lower)); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleViewModelLocationBrowse(); } }); Label fileLabel = new Label(group, SWT.NULL); fileLabel.setText(Messages.Name); fileLabel.setToolTipText(Messages.ViewNameTooltip); this.viewModelFileText = new Text(group, SWT.BORDER | SWT.SINGLE); gridData = new GridData(GridData.FILL_HORIZONTAL); this.viewModelFileText.setLayoutData(gridData); this.viewModelFileText.setToolTipText(Messages.ViewNameTooltip); WidgetUtil.colorizeWidget(this.viewModelFileText, WidgetUtil.TEXT_COLOR_BLUE, false); this.viewModelFileText.setForeground(WidgetUtil.getDarkBlueColor()); this.viewModelFileText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { // Check view file name for existing if "location" is already // set handleViewModelTextChanged(); } }); browseButton = new Button(group, SWT.PUSH); gridData = new GridData(); browseButton.setLayoutData(gridData); browseButton.setText(Messages.BrowseElipsis); browseButton.setToolTipText(NLS.bind(Messages.BrowseToSelect_0_Model, Messages.View_lower)); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleViewModelBrowse(); } }); VIEW_HELP : { Group helpGroup = WidgetFactory.createGroup(group, Messages.Status, SWT.NONE | SWT.BORDER_DASH, 3); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = 3; helpGroup.setLayoutData(gd); viewModelHelpText = new Text(helpGroup, SWT.WRAP | SWT.READ_ONLY); WidgetUtil.colorizeWidget(this.viewModelHelpText, WidgetUtil.TEXT_COLOR_BLUE, true); gd = new GridData(GridData.FILL_BOTH); gd.heightHint = 40; gd.widthHint = 300; viewModelHelpText.setLayoutData(gd); } } } public void setVisible() { // Set field values from import manager\ refreshing = true; refreshUiFromManager(); refreshing = false; } /** * Uses the standard container selection dialog to choose the new value for * the container field. */ void handleSourceModelLocationBrowse() { IProject proj = this.importManager.getTargetProject(); locationFilter.setSingleProjectProject(proj); final IContainer folder = WidgetUtil.showFolderSelectionDialog( ModelerCore.getWorkspace().getRoot(), locationFilter, new ModelProjectSelectionStatusValidator()); if (folder != null && sourceModelContainerText != null) { // viewModelContainerText.setText(folder.getFullPath().makeRelative().toString()); this.importManager.setSourceModelLocation(folder); this.sourceModelContainerText.setText(folder.getFullPath().makeRelative().toString()); } notifyChanged(); } void handleViewModelLocationBrowse() { IProject proj = this.importManager.getTargetProject(); locationFilter.setSingleProjectProject(proj); final IContainer folder = WidgetUtil.showFolderSelectionDialog( ModelerCore.getWorkspace().getRoot(), locationFilter, new ModelProjectSelectionStatusValidator()); if (folder != null && sourceModelContainerText != null) { // viewModelContainerText.setText(folder.getFullPath().makeRelative().toString()); this.importManager.setViewModelLocation(folder); this.viewModelContainerText.setText(folder.getFullPath().makeRelative().toString()); } notifyChanged(); } void handleSourceModelBrowse() { final Object[] selections = WidgetUtil .showWorkspaceObjectSelectionDialog( "Select Source Model", //$NON-NLS-1$ "Select Source Model Message", //$NON-NLS-1$ false, null, sourceModelFilter, new ModelResourceSelectionValidator(false), new ModelExplorerLabelProvider(), new ModelExplorerContentProvider()); if (selections != null && selections.length == 1 && sourceModelFileText != null) { if (selections[0] instanceof IFile) { IFile selectedFile = (IFile)selections[0]; IContainer folder = selectedFile.getParent(); String modelName = selectedFile.getFullPath().lastSegment(); this.importManager.setSourceModelExists(true); this.importManager.setSourceModelLocation(folder); this.importManager.setSourceModelName(modelName); this.sourceModelContainerText.setText(folder.getFullPath().makeRelative().toString()); this.sourceModelFileText.setText(modelName); } } notifyChanged(); } void handleViewModelBrowse() { final Object[] selections = WidgetUtil .showWorkspaceObjectSelectionDialog( "Select Source Model", //$NON-NLS-1$ "Select Source Model Message", //$NON-NLS-1$ false, null, sourceModelFilter, new ModelResourceSelectionValidator(false), new ModelExplorerLabelProvider(), new ModelExplorerContentProvider()); if (selections != null && selections.length == 1 && sourceModelFileText != null) { if (selections[0] instanceof IFile) { IFile selectedFile = (IFile)selections[0]; IContainer folder = selectedFile.getParent(); String modelName = selectedFile.getFullPath().lastSegment(); this.importManager.setViewModelExists(true); this.importManager.setViewModelLocation(folder); this.importManager.setViewModelName(modelName); this.viewModelContainerText.setText(folder.getFullPath().makeRelative().toString()); this.viewModelFileText.setText(modelName); } } notifyChanged(); } void handleViewModelTextChanged() { if( refreshing ) return; String newName = ""; //$NON-NLS-1$ if (this.viewModelFileText.getText() != null) { if (this.viewModelFileText.getText().length() == 0) { this.importManager.setViewModelName(newName); this.importManager.setViewModelExists(false); } else { newName = this.viewModelFileText.getText(); this.importManager.setViewModelName(newName); this.importManager.setViewModelExists(viewModelExists()); } } notifyChanged(); } void handleSourceModelTextChanged() { if( refreshing ) return; String newName = ""; //$NON-NLS-1$ if (this.sourceModelFileText.getText() != null) { if (this.sourceModelFileText.getText().length() == 0) { this.importManager.setSourceModelName(newName); this.importManager.setSourceModelExists(false); } else { newName = this.sourceModelFileText.getText(); this.importManager.setSourceModelName(newName); this.importManager.setSourceModelExists(sourceModelExists()); } } notifyChanged(); } private boolean viewModelExists() { if (this.importManager.getViewModelLocation() == null) { return false; } return modelWorkspaceManager.modelExists(importManager.getViewModelLocation().getFullPath().toOSString(), this.viewModelFileText.getText()); } private boolean sourceModelExists() { if (this.importManager.getSourceModelLocation() == null) { return false; } return modelWorkspaceManager.modelExists(importManager.getSourceModelLocation().getFullPath().toOSString(), this.sourceModelFileText.getText()); } public void refreshUiFromManager() { this.refreshing = true; IContainer sourceLocation = this.importManager.getSourceModelLocation(); if( sourceLocation != null ) { this.sourceModelContainerText.setText(sourceLocation.getFullPath().makeRelative().toString()); } if( this.importManager.getSourceModelName() != null ) { if (!this.sourceModelFileText.getText().equals(this.importManager.getSourceModelName())) { this.sourceModelFileText.setText(this.importManager.getSourceModelName()); } } IContainer viewLocation = this.importManager.getViewModelLocation(); if( viewLocation != null ) { this.viewModelContainerText.setText(viewLocation.getFullPath().makeRelative().toString()); } if( this.importManager.getViewModelName() != null ) { if (!this.viewModelFileText.getText().equals(this.importManager.getViewModelName())) { this.viewModelFileText.setText(this.importManager.getViewModelName()); } } // // source model info is complete so go ahead and set message for user setSourceModelHelpMessage(); // source model info is complete so go ahead and set message for user setViewModelHelpMessage(); updateDesignerProperties(); this.refreshing = false; } private void setSourceModelHelpMessage() { String message = NLS.bind(Messages.Status_SourceModelDoesNotExistAndWillBeCreated, this.sourceModelFileText.getText()); if (sourceModelExists()) { if (!sourceModelHasConnectionProfile()) { message = NLS.bind(Messages.Status_ExistingSourceModelHasNoProfile, this.sourceModelFileText.getText()); } else if (!sourceModelHasSameConnectionProfile()) { message = NLS.bind(Messages.Status_ExistingSourceModelHasWrongProfile, this.sourceModelFileText.getText()); } else { if (sourceHasProcedure()) { message = NLS.bind(Messages.Status_ExistingSourceModelAlreadyContainsInvoke, this.sourceModelFileText.getText()); } else { message = NLS.bind(Messages.Status_ExistingSourceModelMissingInvoke, this.sourceModelFileText.getText()); } } } else if (this.importManager.getSourceModelName() == null || this.importManager.getSourceModelName().length() == 0) { message = Messages.Status_SourceModelNameCannotBeNullOrEmpty; } this.sourceModelHelpText.setText(message); } private void setViewModelHelpMessage() { String message = NLS.bind(Messages.Status_ViewModelDoesNotExistAndWillBeCreated, this.viewModelFileText.getText()); if (viewModelExists()) { message = NLS.bind(Messages.Statis_ViewModelAlreadyExists, this.viewModelFileText.getText()); } else { if (this.importManager.getViewModelName() == null || this.importManager.getViewModelName().length() == 0) { message = Messages.Status_ViewModelNameCannotBeNullOrEmpty; } } this.viewModelHelpText.setText(message); } private boolean sourceHasProcedure() { if ( !sourceModelExists() ) { return false; } try { IResource sourceModel = ModelUtilities.getModelFile( this.importManager.getSourceModelLocation().getFullPath().toOSString(), this.sourceModelFileText.getText()); ModelResource smr = ModelUtilities.getModelResourceForIFile((IFile) sourceModel, false); if (smr != null) { return FlatFileRelationalModelFactory.procedureExists(smr, FlatFileRelationalModelFactory.INVOKE); } } catch (ModelWorkspaceException ex) { ModelGeneratorWsdlUiConstants.UTIL.log(IStatus.ERROR, ex, NLS.bind(Messages.Error_DeterminingSourceModelHas_0_Procedure, FlatFileRelationalModelFactory.INVOKE)); } return false; } /* * Determine if the Source Model has ConnectionProfile set. */ private boolean sourceModelHasConnectionProfile() { if (!sourceModelExists()) { return false; } try { IResource sourceModel = ModelUtilities.getModelFile(this.importManager.getSourceModelLocation().getFullPath().toOSString(), this.sourceModelFileText.getText()); ModelResource smr = ModelUtilities.getModelResourceForIFile((IFile)sourceModel, false); if (smr != null) { IConnectionProfile profile = connectionInfoHelper.getConnectionProfile(smr); if (profile == null || this.importManager.getConnectionProfile() == null) { return false; } return true; } } catch (ModelWorkspaceException ex) { ModelGeneratorWsdlUiConstants.UTIL.log(IStatus.ERROR, ex, Messages.Error_DeterminingSourceModelHasProfile); } return false; } private boolean sourceModelHasSameConnectionProfile() { if ( !sourceModelExists() ) { return false; } try { IResource sourceModel = ModelUtilities.getModelFile( this.importManager.getSourceModelLocation().getFullPath().toOSString(), this.sourceModelFileText.getText()); ModelResource smr = ModelUtilities.getModelResourceForIFile((IFile) sourceModel, false); if (smr != null) { IConnectionProfile profile = connectionInfoHelper.getConnectionProfile(smr); if (profile == null || this.importManager.getConnectionProfile() == null) { return false; } if (profile.getName().equalsIgnoreCase(this.importManager.getConnectionProfile().getName())) { return true; } } } catch (ModelWorkspaceException ex) { ModelGeneratorWsdlUiConstants.UTIL.log(IStatus.ERROR, ex, Messages.Error_DeterminingSourceModelHasMatchingProfile); } return false; } private void updateDesignerProperties() { Properties designerProperties = this.importManager.getDesignerProperties(); if (designerProperties != null) { if (this.sourceModelFileText.getText() != null) { DesignerPropertiesUtil.setSourceModelName(designerProperties, this.sourceModelFileText.getText()); } if (this.importManager.getSourceModelLocation() != null) { DesignerPropertiesUtil.setProjectName(designerProperties, this.importManager.getSourceModelLocation().getProject().getName()); } if (this.viewModelFileText.getText() != null) { DesignerPropertiesUtil.setViewModelName(designerProperties, this.viewModelFileText.getText()); } } } /* (non-Javadoc) * @see com.metamatrix.core.event.IChangeListener#stateChanged(com.metamatrix.core.event.IChangeNotifier) */ @Override public void stateChanged(IChangeNotifier theSource) { refreshing = true; refreshUiFromManager(); refreshing = false; } public void notifyChanged() { this.importManager.notifyChanged(); } private IProject getProject(IPath path ) { if( path == null ) return null; IPath actualPath = new Path('/' + path.toString()); ModelWorkspaceItem item = ModelWorkspaceManager.getModelWorkspaceManager().findModelWorkspaceItem(actualPath, IResource.FOLDER); if( item == null ) { item = ModelWorkspaceManager.getModelWorkspaceManager().findModelWorkspaceItem(actualPath, IResource.PROJECT); } if( item != null) { return item.getResource().getProject(); } return null; } final ViewerFilter sourceModelFilter = new ModelWorkspaceViewerFilter(true) { @Override public boolean select(final Viewer viewer, final Object parent, final Object element) { if (element instanceof IResource) { IProject proj = ((IResource)element).getProject(); if( proj == null ) { return false; } else { IProject targetProj = importManager.getTargetProject(); if( targetProj != null && targetProj != proj ) return false; // If the project is closed, dont show boolean projectOpen = ((IResource) element).getProject().isOpen(); if (projectOpen) { // Show open projects if (element instanceof IProject) { try { return ((IProject) element).hasNature(ModelerCore.NATURE_ID); } catch (CoreException e) { UiConstants.Util.log(e); return false; } } else if (element instanceof IContainer) { return true; // Show webservice model files, and not .xsd files } else if (element instanceof IFile && ModelUtil.isModelFile((IFile) element)) { ModelResource theModel = null; try { theModel = ModelUtil.getModelResource( (IFile) element, true); } catch (Exception ex) { ModelerCore.Util.log(ex); return false; } if (theModel != null&& ModelIdentifier.isRelationalSourceModel(theModel)) { return true; } } } } } return false; } }; final ViewerFilter viewModelFilter = new ModelWorkspaceViewerFilter(true) { @Override public boolean select(final Viewer viewer, final Object parent, final Object element) { if (element instanceof IResource) { IProject proj = ((IResource)element).getProject(); if( proj == null ) { return false; } else { IProject targetProj = importManager.getTargetProject(); if( targetProj != null && targetProj != proj ) return false; // If the project is closed, dont show boolean projectOpen = ((IResource) element).getProject().isOpen(); if (projectOpen) { // Show open projects if (element instanceof IProject) { try { return ((IProject) element).hasNature(ModelerCore.NATURE_ID); } catch (CoreException e) { UiConstants.Util.log(e); return false; } } else if (element instanceof IContainer) { return true; // Show webservice model files, and not .xsd files } else if (element instanceof IFile && ModelUtil.isModelFile((IFile) element)) { ModelResource theModel = null; try { theModel = ModelUtil.getModelResource((IFile) element, true); } catch (Exception ex) { ModelerCore.Util.log(ex); return false; } if (theModel != null && ModelIdentifier.isRelationalViewModel(theModel)) { return true; } } } } } return false; } }; }