2009年8月6日

Use ConsoleFactory and ConsolePageParticipant Extension

实现RCP自身的控制台

New Plug-in Project
Project Name: hello.console

Add org.eclipse.ui.console Dependency
// -- META-INF/MANIFEST.MF --
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Console
Bundle-SymbolicName: hello.console;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui,
org.eclipse.ui.console


Add org.eclipse.ui.console.consoleFactories Extension
Add org.eclipse.ui.console.consolePageParticipants Extension
// -- plugin.xml --
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.console.consoleFactories">
<consoleFactory
class="hello.console.ConsoleFactory"
label="New Hello Console">
</consoleFactory>
</extension>
<extension
point="org.eclipse.ui.console.consolePageParticipants">
<consolePageParticipant
class="hello.console.ConsolePageParticipant"
id="hello.console.consolePageParticipant">
<enablement>
<instanceof
value="org.eclipse.ui.console.IOConsole">
</instanceof></enablement>
</consolePageParticipant>
</extension>
<extension
point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension
targetID="org.eclipse.ui.resourcePerspective">
<view
id="org.eclipse.ui.console.ConsoleView"
minimized="false"
relationship="top"
relative="org.eclipse.ui.views.TaskList"
visible="true">
</view>
</perspectiveExtension>
</extension>

</plugin>


// -- src/hello/console/ConsoleFactory.java --
package hello.console;

import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleFactory;
import org.eclipse.ui.console.IConsoleManager;
import org.eclipse.ui.console.IOConsole;

public class ConsoleFactory implements IConsoleFactory {

@Override public void openConsole() {
IConsoleManager consoleManager = ConsolePlugin.getDefault().getConsoleManager();
IConsole console = new IOConsole("Hello Console", null);
consoleManager.addConsoles(new IConsole[]{console});
consoleManager.showConsoleView(console);
}

}

// -- src/hello/console/ConsolePageParticipant.java --
package hello.console;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleConstants;
import org.eclipse.ui.console.IConsolePageParticipant;
import org.eclipse.ui.console.actions.CloseConsoleAction;
import org.eclipse.ui.part.IPageBookViewPage;

public class ConsolePageParticipant implements IConsolePageParticipant {

@Override public void activated() {}

@Override public void deactivated() {}

@Override public void dispose() {}

@Override public void init(IPageBookViewPage page, IConsole console) {
IToolBarManager manager = page.getSite().getActionBars().getToolBarManager();
IAction fCloseAction = new CloseConsoleAction(console);
manager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, fCloseAction);
}

@Override public Object getAdapter(Class adapter) { return null; }

}

沒有留言:

網誌存檔