- 浏览: 655721 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (170)
- Android (10)
- Java (35)
- PHP (3)
- Linux (3)
- Powerdesigner (2)
- dedcms (1)
- nginx (1)
- Flex (9)
- REST (2)
- Google App Engine (1)
- mysql (6)
- JAVA开源项目 (1)
- Eclipse (18)
- Eclipse Orion (1)
- Dojo (2)
- UML (1)
- Eclipse GEF EMF (4)
- Eclipse 插件开发 (6)
- OSGI (2)
- DeDeCMS (1)
- Maqetta (2)
- JavaScript (1)
- nginx php (1)
- Dojo V1.7 (2)
- Spring3 (4)
- Hibernate3 (4)
- MongoDB (3)
- Scala (2)
- DSL (1)
- Python (3)
- Maven (1)
- Tomcat (3)
- XMPP (2)
- Apache (4)
- NodeJS (1)
- SQLSERVER (2)
- HTML5 (1)
- Nexus (1)
- web服务器 (2)
- Jetty (2)
- weixin (1)
- ngrok (1)
- 网络与信息安全 (1)
最新评论
-
wangyudong:
配置有点晕,开源社区上找了一个开源的Holer,只需要设置Ac ...
用ngrok实现外网访问本地WEB项目的方法 -
lolo968:
你收集的资料没有链接
基于OSGI的框架开发小结(转) -
smartdog:
使用的maven的版本很老的,而且写的不是很清楚,建议可以参考 ...
Maven多项目依赖配置 -
Tom.X:
OSGi联盟官网:http://osgia.com
基于OSGI的框架开发小结(转) -
Miller003:
你好,我在本地测试时,删除catalina.jar和tomca ...
基于Tomcat7的HTML5 WebSocket 应用示例
在制作eclipse插件的时候,时常需要对已经存在的视图做一些扩展,例如在project explorer中增加一个右键菜单,或者需要获取outline中当前选中项,等等。而这些操作的前提,是获取这些视图的id,然后通过获取视图的语句获取到视图,并进行下一步操作。
例如:如果是在view中:
如果是在action中:
可见获取到视图的id是很重要的。如何获取id呢,有很多方法,我觉得比较常用的是以下两种:
1.通过手动查找目标视图所在的插件的plugin.xml中对改视图的定义,获得视图id。
描述:我觉得这是最保险的办法,因为所有的视图都必定有一个plugin.xml定义,但是找到这个plugin.xml还是需要一些操作,可能会耗费一些时间。
步骤:
a.点击“工具栏”->“Search”->“Search”,或者热键“ctrl+h”。选“ Plugin Search”。
b.Search for 选"Extention Point",Limit to 选“References”,External Scope 选“Enabled Plug-ins only”。
c.下面的scope选“Worksapaces”。
d.上面的Search String框填入我们要搜索的插件的扩展点的名字,这里我们要找视图插件,所以填入:org.eclipse.ui.views
e.点击search以后,在底部Search视图内列出很多搜索结果,任意选中一个,双击,可以看到editor内打开了该plugin.xml,选中编辑器底部的Extentions,用图形化的方式来查看会更快捷。
f.可以看到该插件使用的扩展点已经以列表的形式列出,我们查找的org.eclipse.ui.views扩展点也已经选中,展开选中的扩展点,可以看到它实现了哪些view,点击某一个,可以在页面右边看到该视图的详细信息,第一项即是视图的id。
我们无法知道目标视图在搜索结果中的哪个plugin中,所以可能会耗费一些时间,建议在查看搜索结果时,通过对视图的分类分析,确定一个大概范围再进行查看。
同时,用这种方法也可以查找其他扩展点的实现插件。
2.通过代码直接读出该视图的id。
描述:通过这种方法,可以直接用鼠标点击某个你想知道的视图,控制台会打印出该视图的id和所属插件的id。
步骤:
a.通过插件向导新建一个插件,并使用Available Templates中的Plugin with a view模板,点finish。
b.对自动创建的SampleView代码进行修改,修改结果如下。其中主要步骤有三个:实现IPartListener2接口,编写isActivePart()方法,调用isActivePart()方法。
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.part.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.jface.action.*;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.ui.*;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.SWT;
import com.raul.learn.sampleview.Activator;
/**
* This sample class demonstrates how to plug-in a new
* workbench view. The view shows data obtained from the
* model. The sample creates a dummy model on the fly,
* but a real implementation would connect to the model
* available either in this or another plug-in (e.g. the workspace).
* The view is connected to the model using a content provider.
* <p>
* The view uses a label provider to define how model
* objects should be presented in the view. Each
* view can present the same model objects using
* different labels and icons, if needed. Alternatively,
* a single label provider can be shared between views
* in order to ensure that objects of the same type are
* presented in the same way everywhere.
* <p>
*/
public class SampleView extends ViewPart implements IPartListener2{
private TableViewer viewer;
private Action action1;
private Action action2;
private Action doubleClickAction;
/*
* The content provider class is responsible for
* providing objects to the view. It can wrap
* existing objects in adapters or simply return
* objects as-is. These objects may be sensitive
* to the current input of the view, or ignore
* it and always show the same content
* (like Task List, for example).
*/
class ViewContentProvider implements IStructuredContentProvider {
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
}
public void dispose() {
}
public Object[] getElements(Object parent) {
return new String[] { "One", "Two", "Three" };
}
}
class ViewLabelProvider extends LabelProvider implements ITableLabelProvider {
public String getColumnText(Object obj, int index) {
return getText(obj);
}
public Image getColumnImage(Object obj, int index) {
return getImage(obj);
}
public Image getImage(Object obj) {
return PlatformUI.getWorkbench().
getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
}
}
class NameSorter extends ViewerSorter {
}
/**
* The constructor.
*/
public SampleView() {
Activator.getDefault().getWorkbench().getActiveWorkbenchWindow()
.getActivePage().addPartListener(this);
}
@Override
public void dispose() {
// TODO Auto-generated method stub
Activator.getDefault().getWorkbench().getActiveWorkbenchWindow()
.getActivePage().removePartListener(this);
super.dispose();
}
/**
* This is a callback that will allow us
* to create the viewer and initialize it.
*/
public void createPartControl(Composite parent) {
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(new ViewContentProvider());
viewer.setLabelProvider(new ViewLabelProvider());
viewer.setSorter(new NameSorter());
viewer.setInput(getViewSite());
makeActions();
hookContextMenu();
hookDoubleClickAction();
contributeToActionBars();
}
private void hookContextMenu() {
MenuManager menuMgr = new MenuManager("#PopupMenu");
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(new IMenuListener() {
public void menuAboutToShow(IMenuManager manager) {
SampleView.this.fillContextMenu(manager);
}
});
Menu menu = menuMgr.createContextMenu(viewer.getControl());
viewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuMgr, viewer);
}
private void contributeToActionBars() {
IActionBars bars = getViewSite().getActionBars();
fillLocalPullDown(bars.getMenuManager());
fillLocalToolBar(bars.getToolBarManager());
}
private void fillLocalPullDown(IMenuManager manager) {
manager.add(action1);
manager.add(new Separator());
manager.add(action2);
}
private void fillContextMenu(IMenuManager manager) {
manager.add(action1);
manager.add(action2);
// Other plug-ins can contribute there actions here
manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
}
private void fillLocalToolBar(IToolBarManager manager) {
manager.add(action1);
manager.add(action2);
}
private void makeActions() {
action1 = new Action() {
public void run() {
showMessage("Action 1 executed");
}
};
action1.setText("Action 1");
action1.setToolTipText("Action 1 tooltip");
action1.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
action2 = new Action() {
public void run() {
showMessage("Action 2 executed");
}
};
action2.setText("Action 2");
action2.setToolTipText("Action 2 tooltip");
action2.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
doubleClickAction = new Action() {
public void run() {
ISelection selection = viewer.getSelection();
Object obj = ((IStructuredSelection)selection).getFirstElement();
showMessage("Double-click detected on "+obj.toString());
}
};
}
private void hookDoubleClickAction() {
viewer.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
doubleClickAction.run();
}
});
}
private void showMessage(String message) {
MessageDialog.openInformation(
viewer.getControl().getShell(),
"Sample View",
message);
}
/**
* Passing the focus request to the viewer's control.
*/
public void setFocus() {
viewer.getControl().setFocus();
}
@Override
public void partActivated(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
isActivePart();
}
@Override
public void partBroughtToTop(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partClosed(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partDeactivated(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partHidden(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partInputChanged(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partOpened(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
@Override
public void partVisible(IWorkbenchPartReference partRef) {
// TODO Auto-generated method stub
}
private void isActivePart() {
IWorkbenchPart part = getViewSite().getPage().getActivePart();
//return part != null && part.equals(this);
System.out.println(part.getSite().getId());
part.getSite().getPluginId();
}
}
发表评论
-
如何提高myeclipse的速度
2012-04-21 20:53 1099提高myeclipse的速度如下: 1、去除不需要加载的模块 ... -
远程调试java程序(转)
2012-02-26 09:44 1389JAVA的远程调试 基于Ja ... -
Eclipse 插件之多页编辑器的实现
2012-01-02 14:00 4282在GEF的开发中,多页标签编辑器是一种常见的实现,其实现 ... -
Eclipse 插件开发中获取相关路径的方法汇总
2011-12-27 14:33 6153如何获如何获取相关路径的方法(没有全部试过,仅供参考): 得 ... -
Eclipse插件开发:关于警告“Discouraged access: *****”(转)
2011-12-22 10:06 1696今天试着用eclipse jee的pagedesigne ... -
It is indirectly referenced from required .class错误
2011-12-21 16:56 1683在eclipse中遇到The type *** cannot ... -
Eclipse GEF 创建浮动Palette
2011-12-20 16:52 3075第一步:新建Editor,并继承自GraphicalEdito ... -
基于eclipse GEF开发Google GWT矢量图形应用(eclipse gef on gwt)
2011-12-20 15:13 1367http://archive.cnblogs.com/a ... -
关于如何配置GEF中的PALETTE
2011-12-20 14:24 1194关于如何配置GEF中的Palette参考Dengues源代码: ... -
The hierarchy of the type is inconsistent
2011-12-19 11:10 3323These errors happend because ... -
Eclipse plugin开发总结
2011-12-16 14:43 1350创建dynamic web project的第一个wiz ... -
Eclipse 源码下载地址
2011-12-16 10:09 950dev.eclipse.org -
开发视图插件(转)
2011-12-15 11:02 2408视图是工作台页面内的可视组件,通常用来浏览信息的层次结构 ... -
开发透视图插件(转)
2011-12-15 10:44 941开发透视图插件 ... -
Eclipse plugin.xml 国际化
2011-12-13 11:11 11881、在Plugin.xml同目录下新建plugin ... -
简便更改Eclipse的Title标题/标题图标/启动画面/等
2011-12-12 16:19 7801实现步骤如下: 1、 ... -
GMF 所依赖的插件
2011-10-23 09:20 1325GMF是Eclipse的一个插件,如同其它插件一样,它首先需 ... -
Gef与MVC体系结构
2011-09-29 14:53 1149摘要: 本文首先介绍了标准的 MVC 体系构架,同时 ... -
25个最佳最闪亮的Eclipse开发项目
2011-08-30 09:32 1781Eclipse基金会发布了最新的Eclipse太阳神版本,囊括 ... -
Eclipse E4 的XWT -- 基于XML的Eclipse开发模式
2011-08-30 09:21 1344Eclipse E4 的下载地址 http:/ ...
相关推荐
`android-pdfview`是一个专为Android平台设计的开源库,它允许开发者在Eclipse这样的集成开发环境中集成并实现PDF文件的展示。这个库是基于Java编程语言,使得在Eclipse中使用变得简单而高效。 在Eclipse中使用`...
3. **定义views扩展点**:在`plugin.xml`文件中,你需要声明一个新的`org.eclipse.ui.views`扩展点,指定视图的类(通常使用`org.eclipse.ui.navigator.CommonNavigator`)以及视图的ID。 4. **配置CommonNavigator...
在Eclipse中,视图(View)是用户界面的一部分,用于展示项目信息、调试数据或工具面板等。它们可以独立存在,也可以与编辑器和其他视图一起组织在工作区的不同部分。 开发Eclipse视图插件通常包括以下几个步骤: ...
`android_pdfview(eclipse版)`是一个专为此目的设计的库,适用于使用Eclipse IDE的开发者。这个库使得在Android应用中预览PDF文件变得简单,无论是从网络加载还是从本地存储读取。下面将详细介绍如何在Eclipse环境下...
`IPerspectiveDescriptor`接口提供了获取透视图ID(`getId()`)和名称(`getName()`)的方法,这可以帮助我们识别当前的透视图类型。而`IWorkbenchPage`接口则可以用来操作页面中的视图和编辑器,例如`showView`方法...
在使用`traceview`时,你需要首先通过`adb logcat -v threadtime`收集应用的性能日志,然后选择相应的进程ID,将日志导入`traceview`。`traceview`会显示一个详细的调用树,每个节点代表一个方法调用,其中包含了...
2. 视图和透视图:视图(View)是Eclipse界面中的窗口,可以展示数据或提供操作。透视图(Perspective)则是一组视图的组合,定义了特定的工作环境。通过实现`IViewPart`和`IPerspectiveDescriptor`接口,可以自定义...
2. **定义插件元数据**: 描述插件的基本信息,如名称、ID、版本号等。 3. **实现功能**: 开发插件的核心逻辑和用户界面。 4. **测试插件**: 使用Eclipse的PDE测试工具来验证插件的功能。 5. **部署插件**: 将插件...
在插件开发中,你需要编写Plugin.xml文件来定义插件元数据,包括插件ID、依赖关系和提供的UI元素。同时,你需要创建Java类来实现这些功能。例如,你可以创建一个新的透视图(Perspective)、视图(View)或编辑器...
4. 可视化元素:如视图(View)、透视图(Perspective)、编辑器(Editor)等的定义和实现。 四、扩展点和贡献点 Eclipse插件通过扩展点(Extension Point)和贡献点(Extension)机制实现功能扩展。扩展点是...
这里,`<你的插件ID>`通常是`org.eclipse.platform`,如果找不到,可以查看`e4_basestyle.css`文件的头部注释,找到对应的ID。 步骤5:重启Eclipse 保存所有更改后,重启Eclipse以使新颜色设置生效。 除了上述基本...
本程序的标题“Eclipse编写的Android获取输入框内容,并且改变标题的程序”表明它涉及到两个主要功能:从用户输入的文本框中获取内容,并动态更新应用程序的标题。这里我们将详细探讨这两个知识点。 首先,我们来...
1. **Eclipse界面介绍**:Eclipse界面分为多个部分,包括工作区(Workspace)、透视图(Perspective)、菜单栏、工具栏、问题视图(Problems View)、控制台(Console)、包浏览器(Package Explorer)等。...
1. **创建新插件项目**:在Eclipse中,使用PDE创建一个新的插件项目,并设置必要的元数据,如插件ID、版本等。 2. **定义插件组件**:定义插件的主要组件,例如视图(View)、编辑器(Editor)、透视图...
每个插件通常包含一个`plugin.xml`文件,它是插件的元数据,定义了插件的ID、版本、依赖关系、提供的服务和激活策略等。此外,还可能包含各种Java类,这些类实现了插件的功能,如视图、编辑器、命令、透视图等。 在...
每个Eclipse插件都有一个名为manifest.mf的元数据文件,其中包含了插件的元信息,如插件ID、依赖关系、提供的服务等。理解并熟练编写manifest.mf是开发插件的关键步骤。 四、创建Eclipse插件项目 在Eclipse中,可以...
// 获取对应位置的Comment对象,填充视图 } } ``` 在Activity中,实例化ListView或RecyclerView,并设置适配器。同时,添加监听器以便用户可以提交新的评论或回复。 ```java ListView commentListView = ...
allowMultiple - 这是一个标志,用来指示此视图是否允许使用 IWorkbenchPage.showView(String id, String secondaryId) 来创建多个实例。缺省值为 false。 <!ELEMENT description (#PCDATA)> 一个可选的子元素,...
1. **plugin.xml**:这是插件的核心配置文件,用于定义插件的元数据,如插件ID、版本、依赖关系、提供的服务和贡献的UI元素等。 2. **Java源代码**:实现插件功能的代码,这些类通常继承自Eclipse提供的基类,如`...