Search in sources :

Example 46 with IWorkbench

use of org.eclipse.ui.IWorkbench in project linuxtools by eclipse.

the class ChangeLogAction method askChangeLogLocation.

protected IEditorPart askChangeLogLocation(String editorLoc) {
    IWorkbench ws = PlatformUI.getWorkbench();
    IWorkspaceRoot myWorkspaceRoot = getWorkspaceRoot();
    IResource given_resource = myWorkspaceRoot.findMember(editorLoc);
    if (given_resource == null)
        return null;
    ChangeLogContainerSelectionDialog dialog = new ChangeLogContainerSelectionDialog(ws.getActiveWorkbenchWindow().getShell(), given_resource.getParent(), false, Messages.getString(// $NON-NLS-1$
    "AddAction.str_ChangeLog_Location"));
    dialog.showClosedProjects(false);
    dialog.open();
    Object[] result = dialog.getResult();
    if (result == null)
        return null;
    final IPath result_path = new Path(result[0] + System.getProperty("file.separator") + // $NON-NLS-1$ //$NON-NLS-2$
    pref_ChangeLogName);
    IFile newChangeLog = createChangeLog(result_path);
    return openEditor(newChangeLog);
}
Also used : IWorkbench(org.eclipse.ui.IWorkbench) IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) IFile(org.eclipse.core.resources.IFile) IWorkspaceRoot(org.eclipse.core.resources.IWorkspaceRoot) IPath(org.eclipse.core.runtime.IPath) IResource(org.eclipse.core.resources.IResource)

Example 47 with IWorkbench

use of org.eclipse.ui.IWorkbench in project knime-core by knime.

the class KNIMEApplication method stop.

/**
 * {@inheritDoc}
 */
@Override
public void stop() {
    final IWorkbench workbench = PlatformUI.getWorkbench();
    if (workbench == null) {
        return;
    }
    final Display display = workbench.getDisplay();
    display.syncExec(new Runnable() {

        @Override
        public void run() {
            if (!display.isDisposed()) {
                workbench.close();
            }
        }
    });
}
Also used : IWorkbench(org.eclipse.ui.IWorkbench) Display(org.eclipse.swt.widgets.Display)

Example 48 with IWorkbench

use of org.eclipse.ui.IWorkbench in project knime-core by knime.

the class KNIMEApplicationWorkbenchWindowAdvisor method addGlobalNodeTimerShutdownHook.

/**
 * Adds a workbench shutdown listener to write and send usage data.
 */
private void addGlobalNodeTimerShutdownHook() {
    IWorkbench wb = PlatformUI.getWorkbench();
    wb.addWorkbenchListener(new IWorkbenchListener() {

        @Override
        public boolean preShutdown(final IWorkbench workbench, final boolean forced) {
            // Write and send usage data.
            NodeTimer.GLOBAL_TIMER.performShutdown();
            // Don't interrupt regular shutdown!
            return true;
        }

        @Override
        public void postShutdown(final IWorkbench workbench) {
        /*nothing to do*/
        }
    });
}
Also used : IWorkbench(org.eclipse.ui.IWorkbench) IWorkbenchListener(org.eclipse.ui.IWorkbenchListener)

Example 49 with IWorkbench

use of org.eclipse.ui.IWorkbench in project knime-core by knime.

the class CheckUpdateMetaNodeLinkAction method runInSWT.

/**
 * {@inheritDoc}
 */
@Override
public void runInSWT() {
    List<NodeID> candidateList = getMetaNodesToCheck();
    final Shell shell = Display.getCurrent().getActiveShell();
    IWorkbench wb = PlatformUI.getWorkbench();
    IProgressService ps = wb.getProgressService();
    LOGGER.debug("Checking for updates for " + candidateList.size() + " node link(s)...");
    CheckUpdateRunnableWithProgress runner = new CheckUpdateRunnableWithProgress(getManager(), candidateList);
    try {
        ps.busyCursorWhile(runner);
    } catch (InvocationTargetException e) {
        LOGGER.warn("Failed to check for updates: " + e.getMessage(), e);
        return;
    } catch (InterruptedException e) {
        return;
    }
    List<NodeID> updateList = runner.getUpdateList();
    Status status = runner.getStatus();
    if (status.getSeverity() == IStatus.ERROR || status.getSeverity() == IStatus.WARNING) {
        ErrorDialog.openError(Display.getDefault().getActiveShell(), null, "Errors while checking for " + "updates on node links", status);
        if (candidateList.size() == 1) {
            /* As only one node is selected and its update failed,
                 * there is nothing else to do. */
            return;
        }
    }
    // find nodes that will be reset as part of the update
    int nodesToResetCount = 0;
    for (NodeID id : updateList) {
        NodeContainerTemplate templateNode = (NodeContainerTemplate) getManager().findNodeContainer(id);
        // TODO problematic with through-connections
        if (templateNode.containsExecutedNode()) {
            nodesToResetCount += 1;
        }
    }
    if (updateList.isEmpty()) {
        if (m_showInfoMsgIfNoUpdateAvail) {
            MessageDialog.openInformation(shell, "Node Update", "No updates available");
        } else {
            LOGGER.info("No updates available (" + candidateList.size() + " node link(s))");
        }
    } else {
        boolean isSingle = updateList.size() == 1;
        String title = "Update Node" + (isSingle ? "" : "s");
        StringBuilder messageBuilder = new StringBuilder();
        messageBuilder.append("Update available for ");
        if (isSingle && candidateList.size() == 1) {
            messageBuilder.append("node \"");
            messageBuilder.append(getManager().findNodeContainer(candidateList.get(0)).getNameWithID());
            messageBuilder.append("\".");
        } else if (isSingle) {
            messageBuilder.append("one node.");
        } else {
            messageBuilder.append(updateList.size());
            messageBuilder.append(" nodes.");
        }
        messageBuilder.append("\n\n");
        if (nodesToResetCount > 0) {
            messageBuilder.append("Reset nodes and update now?");
        } else {
            messageBuilder.append("Update now?");
        }
        String message = messageBuilder.toString();
        if (MessageDialog.openQuestion(shell, title, message)) {
            LOGGER.debug("Running update for " + updateList.size() + " node(s): " + updateList);
            execute(new UpdateMetaNodeLinkCommand(getManager(), updateList.toArray(new NodeID[updateList.size()])));
        }
    }
}
Also used : MultiStatus(org.eclipse.core.runtime.MultiStatus) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) UpdateMetaNodeLinkCommand(org.knime.workbench.editor2.commands.UpdateMetaNodeLinkCommand) InvocationTargetException(java.lang.reflect.InvocationTargetException) IWorkbench(org.eclipse.ui.IWorkbench) Shell(org.eclipse.swt.widgets.Shell) NodeContainerTemplate(org.knime.core.node.workflow.NodeContainerTemplate) IProgressService(org.eclipse.ui.progress.IProgressService) NodeID(org.knime.core.node.workflow.NodeID)

Example 50 with IWorkbench

use of org.eclipse.ui.IWorkbench in project knime-core by knime.

the class WorkflowEditor method setInput.

/**
 * Sets the editor input, that is, the file that contains the serialized
 * workflow manager.
 *
 * {@inheritDoc}
 */
@Override
protected void setInput(final IEditorInput input) {
    LOGGER.debug("Setting input into editor...");
    super.setInput(input);
    m_origRemoteLocation = null;
    if (input instanceof WorkflowManagerInput) {
        // metanode and subnode
        setWorkflowManagerInput((WorkflowManagerInput) input);
    } else if (input instanceof IURIEditorInput) {
        File wfFile;
        AbstractExplorerFileStore wfFileFileStore = null;
        File mountPointRoot = null;
        URI uri = ((IURIEditorInput) input).getURI();
        if (input instanceof RemoteWorkflowInput) {
            m_origRemoteLocation = ((RemoteWorkflowInput) input).getRemoteOriginalLocation();
        }
        if ("file".equals(uri.getScheme())) {
            wfFile = new File(uri);
            try {
                LocalExplorerFileStore fs = ExplorerFileSystem.INSTANCE.fromLocalFile(wfFile);
                if ((fs == null) || (fs.getContentProvider() == null)) {
                    LOGGER.info("Could not determine mount point root for " + wfFile.getParent() + ", looks like it is a linked resource");
                } else {
                    wfFileFileStore = fs;
                    mountPointRoot = fs.getContentProvider().getFileStore("/").toLocalFile();
                }
            } catch (CoreException ex) {
                LOGGER.warn("Could not determine mount point root for " + wfFile.getParent() + ": " + ex.getMessage(), ex);
            }
        } else if (ExplorerFileSystem.SCHEME.equals(uri.getScheme())) {
            AbstractExplorerFileStore filestore = ExplorerFileSystem.INSTANCE.getStore(uri);
            if (filestore == null) {
                LOGGER.error("Could not find filestore for URI " + uri);
                openErrorDialogAndCloseEditor("Could not find filestore for URI " + uri);
                return;
            }
            wfFileFileStore = filestore;
            try {
                wfFile = filestore.toLocalFile();
            } catch (CoreException ex) {
                LOGGER.error(ex.getMessage(), ex);
                openErrorDialogAndCloseEditor(ex.getMessage());
                return;
            }
            if (wfFile == null) {
                LOGGER.error("URI " + uri + " is not a local workflow");
                openErrorDialogAndCloseEditor("URI " + uri + " is not a local workflow");
                return;
            }
            try {
                mountPointRoot = filestore.getContentProvider().getFileStore("/").toLocalFile();
            } catch (CoreException ex) {
                LOGGER.warn("Could not determine mount point root for " + wfFile.getParent() + ": " + ex.getMessage(), ex);
            }
        } else {
            LOGGER.error("Unsupported scheme for workflow URI: " + uri);
            openErrorDialogAndCloseEditor("Unsupported scheme for workflow URI: " + uri);
            return;
        }
        URI oldFileResource = m_fileResource;
        WorkflowManagerUI oldManager = m_manager;
        final File wfDir = wfFile.getParentFile();
        m_fileResource = wfDir.toURI();
        LOGGER.debug("Resource File's project: " + m_fileResource);
        boolean isEnableAutoSave = true;
        try {
            if (oldManager != null) {
                // doSaveAs called
                assert oldFileResource != null;
                WorkflowManagerUI managerForOldResource = (WorkflowManagerUI) ProjectWorkflowMap.getWorkflowUI(oldFileResource);
                if (m_manager != managerForOldResource) {
                    throw new IllegalStateException(String.format("Cannot set new input for workflow editor " + "as there was already a workflow manager set (old resource: \"%s\", " + "new resource: \"%s\", old manager: \"%s\", manager to old resource: \"%s\"", oldFileResource, m_fileResource, oldManager, managerForOldResource));
                }
                ProjectWorkflowMap.replace(m_fileResource, oldManager, oldFileResource);
                isEnableAutoSave = m_isAutoSaveAllowed;
            } else {
                m_manager = (WorkflowManagerUI) ProjectWorkflowMap.getWorkflowUI(m_fileResource);
            }
            if (m_manager != null) {
                // in case the workflow manager was edited somewhere else
                if (m_manager.isDirty()) {
                    markDirty();
                }
            } else {
                File autoSaveDirectory = WorkflowSaveHelper.getAutoSaveDirectory(new ReferencedFile(wfDir));
                if (autoSaveDirectory.exists()) {
                    if (!autoSaveDirectory.isDirectory() || !autoSaveDirectory.canRead()) {
                        LOGGER.warnWithFormat("Found existing auto-save location to workflow \"%s\" (\"%s\") but %s" + " - disabling auto-save", wfDir.getName(), autoSaveDirectory.getAbsolutePath(), (!autoSaveDirectory.isDirectory() ? "it is not a directory" : "cannot read it"));
                        isEnableAutoSave = false;
                    } else {
                        File parentDir = autoSaveDirectory.getParentFile();
                        String date = DateFormatUtils.format(autoSaveDirectory.lastModified(), "yyyy-MM-dd HH-mm");
                        String newName = wfDir.getName() + " (Auto-Save Copy - " + date + ")";
                        int unique = 1;
                        File restoredAutoSaveDirectory;
                        while ((restoredAutoSaveDirectory = new File(parentDir, newName)).exists()) {
                            newName = wfDir.getName() + " (Auto-Save Copy - " + date + " #" + (unique++) + ")";
                        }
                        // this is the file store object to autoSaveDirectory - if we can resolve it
                        // we use it below in user messages and to do the rename in order to trigger a refresh
                        // in the explorer tree - if we can't resolve it (dunno why) we use java.io.File operation
                        AbstractExplorerFileStore autoSaveDirFileStore = null;
                        AbstractExplorerFileStore restoredAutoSaveDirFileStore = null;
                        if (wfFileFileStore != null) {
                            try {
                                // first parent is workflow dir, parent of that is the workflow group
                                AbstractExplorerFileStore parFS = wfFileFileStore.getParent().getParent();
                                AbstractExplorerFileStore temp = parFS.getChild(autoSaveDirectory.getName());
                                if (autoSaveDirectory.equals(temp.toLocalFile())) {
                                    autoSaveDirFileStore = temp;
                                }
                                restoredAutoSaveDirFileStore = parFS.getChild(newName);
                            } catch (CoreException e) {
                                LOGGER.warn("Unable to resolve parent file store for \"" + wfFileFileStore + "\"", e);
                            }
                        }
                        int action = openQuestionDialogWhenLoadingWorkflowWithAutoSaveCopy(wfDir.getName(), restoredAutoSaveDirectory.getName());
                        final boolean openCopy;
                        switch(action) {
                            case // Open Copy
                            0:
                                openCopy = true;
                                break;
                            case // Open Original
                            1:
                                openCopy = false;
                                break;
                            default:
                                // Cancel
                                String error = "Canceling due to auto-save copy conflict";
                                openErrorDialogAndCloseEditor(error);
                                throw new OperationCanceledException(error);
                        }
                        boolean couldRename = false;
                        if (autoSaveDirFileStore != null) {
                            // preferred way to rename, updates explorer tree
                            try {
                                autoSaveDirFileStore.move(restoredAutoSaveDirFileStore, EFS.NONE, null);
                                couldRename = true;
                            } catch (CoreException e) {
                                String message = "Could not rename auto-save copy\n" + "from\n  " + autoSaveDirFileStore.getMountIDWithFullPath() + "\nto\n  " + newName;
                                LOGGER.error(message, e);
                            }
                        } else {
                            LOGGER.warnWithFormat("Could not resolve explorer file store to \"%s\" - " + "renaming on file system directly", autoSaveDirectory.getAbsolutePath());
                            // just rename on file system and ignore explorer tree
                            couldRename = autoSaveDirectory.renameTo(restoredAutoSaveDirectory);
                        }
                        if (!couldRename) {
                            isEnableAutoSave = false;
                            String message = "Could not rename auto-save copy\n" + "from\n  " + autoSaveDirectory.getAbsolutePath() + "\nto\n  " + restoredAutoSaveDirectory.getAbsolutePath() + "";
                            if (openCopy) {
                                openErrorDialogAndCloseEditor(message);
                                throw new OperationCanceledException(message);
                            } else {
                                MessageDialog.openWarning(Display.getDefault().getActiveShell(), "Auto-Save Rename Problem", message + "\nAuto-Save will be disabled.");
                            }
                        }
                        if (openCopy) {
                            m_fileResource = restoredAutoSaveDirectory.toURI();
                            wfFile = new File(restoredAutoSaveDirectory, wfFile.getName());
                        }
                    }
                }
                IWorkbench wb = PlatformUI.getWorkbench();
                IProgressService ps = wb.getProgressService();
                // this one sets the workflow manager in the editor
                LoadWorkflowRunnable loadWorkflowRunnable = new LoadWorkflowRunnable(this, m_origRemoteLocation != null ? m_origRemoteLocation : uri, wfFile, mountPointRoot);
                ps.busyCursorWhile(loadWorkflowRunnable);
                // non-null if set by workflow runnable above
                if (m_manager == null) {
                    if (loadWorkflowRunnable.hasLoadingBeenCanceled()) {
                        String cancelError = loadWorkflowRunnable.getLoadingCanceledMessage();
                        openErrorDialogAndCloseEditor(cancelError);
                        throw new OperationCanceledException(cancelError);
                    } else if (loadWorkflowRunnable.getThrowable() != null) {
                        throw new RuntimeException(loadWorkflowRunnable.getThrowable());
                    }
                }
                ProjectWorkflowMap.putWorkflowUI(m_fileResource, m_manager);
            }
            if (oldManager == null) {
                // not null if via doSaveAs
                // in any case register as client (also if the workflow was already loaded by another client
                ProjectWorkflowMap.registerClientTo(m_fileResource, this);
            }
        } catch (InterruptedException ie) {
            LOGGER.fatal("Workflow loading thread interrupted", ie);
        } catch (InvocationTargetException e) {
            LOGGER.fatal("Workflow could not be loaded.", e);
        }
        m_isAutoSaveAllowed = m_parentEditor == null && isEnableAutoSave;
        setupAutoSaveSchedule();
        m_manuallySetToolTip = null;
        updatePartName();
        if (getGraphicalViewer() != null) {
            loadProperties();
            updateTempRemoteWorkflowMessage();
        }
        // update Actions, as now there's everything available
        updateActions();
    } else {
        throw new IllegalArgumentException("Unsupported editor input: " + input.getClass());
    }
}
Also used : IURIEditorInput(org.eclipse.ui.IURIEditorInput) LocalExplorerFileStore(org.knime.workbench.explorer.filesystem.LocalExplorerFileStore) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) WorkflowManagerUI(org.knime.core.ui.node.workflow.WorkflowManagerUI) URI(java.net.URI) ReferencedFile(org.knime.core.internal.ReferencedFile) InvocationTargetException(java.lang.reflect.InvocationTargetException) IWorkbench(org.eclipse.ui.IWorkbench) CoreException(org.eclipse.core.runtime.CoreException) AbstractExplorerFileStore(org.knime.workbench.explorer.filesystem.AbstractExplorerFileStore) IProgressService(org.eclipse.ui.progress.IProgressService) ReferencedFile(org.knime.core.internal.ReferencedFile) File(java.io.File) RemoteWorkflowInput(org.knime.workbench.explorer.RemoteWorkflowInput)

Aggregations

IWorkbench (org.eclipse.ui.IWorkbench)105 IWorkbenchPage (org.eclipse.ui.IWorkbenchPage)32 IWorkbenchWindow (org.eclipse.ui.IWorkbenchWindow)31 IEditorPart (org.eclipse.ui.IEditorPart)21 PartInitException (org.eclipse.ui.PartInitException)20 WizardDialog (org.eclipse.jface.wizard.WizardDialog)15 CoreException (org.eclipse.core.runtime.CoreException)12 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)12 Shell (org.eclipse.swt.widgets.Shell)11 IResource (org.eclipse.core.resources.IResource)9 ISelection (org.eclipse.jface.viewers.ISelection)9 Display (org.eclipse.swt.widgets.Display)8 ArrayList (java.util.ArrayList)7 IFile (org.eclipse.core.resources.IFile)7 IEditorDescriptor (org.eclipse.ui.IEditorDescriptor)7 IProject (org.eclipse.core.resources.IProject)6 TreeViewer (org.eclipse.jface.viewers.TreeViewer)6 TableEditorInput (com.cubrid.common.ui.cubrid.table.editor.TableEditorInput)5 ICubridNode (com.cubrid.common.ui.spi.model.ICubridNode)5 ExecTaskWithProgress (com.cubrid.common.ui.spi.progress.ExecTaskWithProgress)5