mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-17 14:05:23 +02:00
Added new element wizard classes.
This commit is contained in:
parent
abe2eac5c3
commit
f8f5b6ab82
3 changed files with 150 additions and 10 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2004-08-06 Chris Wiebe
|
||||||
|
|
||||||
|
Added new element wizard classes.
|
||||||
|
* src/org/eclipse/cdt/internal/ui/wizards/NewElementWizard.java
|
||||||
|
* src/org/eclipse/cdt/internal/ui/wizards/NewElementWizardPage.java
|
||||||
|
|
||||||
2004-08-04 Alain Magloire
|
2004-08-04 Alain Magloire
|
||||||
|
|
||||||
Provide filters for the Outliner.
|
Provide filters for the Outliner.
|
||||||
|
|
|
@ -0,0 +1,136 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2000, 2004 IBM Corporation and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Common Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/cpl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* IBM Corporation - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.cdt.internal.ui.wizards;
|
||||||
|
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.ui.actions.WorkbenchRunnableAdapter;
|
||||||
|
import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
|
||||||
|
import org.eclipse.cdt.ui.CUIPlugin;
|
||||||
|
import org.eclipse.core.resources.IFile;
|
||||||
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||||
|
import org.eclipse.core.resources.ResourcesPlugin;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.core.runtime.OperationCanceledException;
|
||||||
|
import org.eclipse.core.runtime.jobs.ISchedulingRule;
|
||||||
|
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
|
import org.eclipse.jface.wizard.Wizard;
|
||||||
|
import org.eclipse.swt.widgets.Display;
|
||||||
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
import org.eclipse.ui.INewWizard;
|
||||||
|
import org.eclipse.ui.IWorkbench;
|
||||||
|
import org.eclipse.ui.IWorkbenchPage;
|
||||||
|
import org.eclipse.ui.PartInitException;
|
||||||
|
import org.eclipse.ui.ide.IDE;
|
||||||
|
import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
|
||||||
|
|
||||||
|
public abstract class NewElementWizard extends Wizard implements INewWizard {
|
||||||
|
|
||||||
|
private IWorkbench fWorkbench;
|
||||||
|
private IStructuredSelection fSelection;
|
||||||
|
|
||||||
|
public NewElementWizard() {
|
||||||
|
setNeedsProgressMonitor(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void openResource(final IFile resource) {
|
||||||
|
final IWorkbenchPage activePage= CUIPlugin.getActivePage();
|
||||||
|
if (activePage != null) {
|
||||||
|
final Display display= getShell().getDisplay();
|
||||||
|
if (display != null) {
|
||||||
|
display.asyncExec(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
IDE.openEditor(activePage, resource, true);
|
||||||
|
} catch (PartInitException e) {
|
||||||
|
CUIPlugin.getDefault().log(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Subclasses should override to perform the actions of the wizard.
|
||||||
|
* This method is run in the wizard container's context as a workspace runnable.
|
||||||
|
* @param monitor
|
||||||
|
* @throws InterruptedException
|
||||||
|
* @throws CoreException
|
||||||
|
*/
|
||||||
|
protected abstract void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the scheduling rule for creating the element.
|
||||||
|
*/
|
||||||
|
protected ISchedulingRule getSchedulingRule() {
|
||||||
|
return ResourcesPlugin.getWorkspace().getRoot(); // look all by default
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected boolean canRunForked() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected void handleFinishException(Shell shell, InvocationTargetException e) {
|
||||||
|
String title= NewWizardMessages.getString("NewElementWizard.op_error.title"); //$NON-NLS-1$
|
||||||
|
String message= NewWizardMessages.getString("NewElementWizard.op_error.message"); //$NON-NLS-1$
|
||||||
|
ExceptionHandler.handle(e, shell, title, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @see Wizard#performFinish
|
||||||
|
*/
|
||||||
|
public boolean performFinish() {
|
||||||
|
IWorkspaceRunnable op= new IWorkspaceRunnable() {
|
||||||
|
public void run(IProgressMonitor monitor) throws CoreException, OperationCanceledException {
|
||||||
|
try {
|
||||||
|
finishPage(monitor);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new OperationCanceledException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
try {
|
||||||
|
getContainer().run(canRunForked(), true, new WorkbenchRunnableAdapter(op, getSchedulingRule()));
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
handleFinishException(getShell(), e);
|
||||||
|
return false;
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
|
||||||
|
*/
|
||||||
|
public void init(IWorkbench workbench, IStructuredSelection currentSelection) {
|
||||||
|
fWorkbench= workbench;
|
||||||
|
fSelection= currentSelection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IStructuredSelection getSelection() {
|
||||||
|
return fSelection;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkbench getWorkbench() {
|
||||||
|
return fWorkbench;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void selectAndReveal(IResource newResource) {
|
||||||
|
BasicNewResourceWizard.selectAndReveal(newResource, fWorkbench.getActiveWorkbenchWindow());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -15,11 +15,9 @@ import org.eclipse.core.runtime.IStatus;
|
||||||
import org.eclipse.jface.wizard.WizardPage;
|
import org.eclipse.jface.wizard.WizardPage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base class for wizard page responsible to create Java elements. The class
|
* Base class for wizard page responsible to create C elements. The class
|
||||||
* provides API to update the wizard's statis line and OK button according to
|
* provides API to update the wizard's status line and OK button according to
|
||||||
* the value of a <code>IStatus</code> object.
|
* the value of a <code>IStatus</code> object.
|
||||||
*
|
|
||||||
* @since 2.0
|
|
||||||
*/
|
*/
|
||||||
public abstract class NewElementWizardPage extends WizardPage {
|
public abstract class NewElementWizardPage extends WizardPage {
|
||||||
|
|
||||||
|
@ -34,8 +32,8 @@ public abstract class NewElementWizardPage extends WizardPage {
|
||||||
*/
|
*/
|
||||||
public NewElementWizardPage(String name) {
|
public NewElementWizardPage(String name) {
|
||||||
super(name);
|
super(name);
|
||||||
fPageVisible= false;
|
fPageVisible = false;
|
||||||
fCurrStatus= new StatusInfo();
|
fCurrStatus = new StatusInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---- WizardPage ----------------
|
// ---- WizardPage ----------------
|
||||||
|
@ -45,12 +43,12 @@ public abstract class NewElementWizardPage extends WizardPage {
|
||||||
*/
|
*/
|
||||||
public void setVisible(boolean visible) {
|
public void setVisible(boolean visible) {
|
||||||
super.setVisible(visible);
|
super.setVisible(visible);
|
||||||
fPageVisible= visible;
|
fPageVisible = visible;
|
||||||
// policy: wizards are not allowed to come up with an error message
|
// policy: wizards are not allowed to come up with an error message
|
||||||
if (visible && fCurrStatus.matches(IStatus.ERROR)) {
|
if (visible && fCurrStatus.matches(IStatus.ERROR)) {
|
||||||
StatusInfo status= new StatusInfo();
|
StatusInfo status = new StatusInfo();
|
||||||
status.setError(""); //$NON-NLS-1$
|
status.setError(""); //$NON-NLS-1$
|
||||||
fCurrStatus= status;
|
fCurrStatus = status;
|
||||||
}
|
}
|
||||||
updateStatus(fCurrStatus);
|
updateStatus(fCurrStatus);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +59,7 @@ public abstract class NewElementWizardPage extends WizardPage {
|
||||||
* @param status status to apply
|
* @param status status to apply
|
||||||
*/
|
*/
|
||||||
protected void updateStatus(IStatus status) {
|
protected void updateStatus(IStatus status) {
|
||||||
fCurrStatus= status;
|
fCurrStatus = status;
|
||||||
setPageComplete(!status.matches(IStatus.ERROR));
|
setPageComplete(!status.matches(IStatus.ERROR));
|
||||||
if (fPageVisible) {
|
if (fPageVisible) {
|
||||||
StatusUtil.applyToStatusLine(this, status);
|
StatusUtil.applyToStatusLine(this, status);
|
||||||
|
|
Loading…
Add table
Reference in a new issue