定制Eclipse IDE之功能篇(二)

转载 2016年05月30日 09:58:54
 
这一篇文章将记录一些Eclipse插件小功能,Smart but Useful。
 
一、设置工作空间 文本文件的编码
 
解决办法:
在org.eclipse.ui.startup拓展里执行这一句(只需执行一次):
ResourcesPlugin.getPlugin().getPluginPreferences().setValue("encoding", "UTF-8");

 

二、默认显示行号

 
解决办法:
在org.eclipse.ui.startup拓展里执行这一句(只需执行一次):
EditorsPlugin.getDefault().getPreferenceStore().setValue("lineNumberRuler", "true");

 

三、Combo控件的显示label获取value
有可能我们要在Combo控件显示label,但获取值的时候拿到value。
 
解决办法:
设置label和value:
复制代码
Combo combo = (Combo)control;
combo.removeAll();
for (int i = 0; i < list.size(); i++) {
     DeviceInfo obj=list.get(i);
     combo.add(obj.getName());  //label
     combo.setData(i +"", obj.getSerialNumber());  //value
}
复制代码
获取value:
String key = "" + comboDevice.getSelectionIndex();
String value= String.valueOf(comboDevice.getData(key));

 

四、写文件,生成文件编码问题
一开始我这样写文件,但发现另外插件读取这文件时(以UTF-8 ),乱码了(检查生成的文件编码是ANSI):
 PrintWriter pw = new PrintWriter(new FileWriter(filePath));
 pw.print(content);
 pw.close(); 
解决办法;
OutputStreamWriter outputStream = new OutputStreamWriter(new FileOutputStream(filePath), "UTF-8");  
outputStream.write(content);  
outputStream.close();

 

五、System.out.println可以在控制台显示
如果你的插件没有做什么处理,那你插件里面System.out.println输出的内容是不会在控制台显示。
解决办法:
复制代码
import java.io.PrintStream;
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.MessageConsole;
import org.eclipse.ui.console.MessageConsoleStream;

public class ConsoleFactory implements IConsoleFactory {

     static MessageConsole console = new MessageConsole("console log",null);

     public void openConsole() {
          showConsole();
     }

     public static void showConsole() {
          if (console != null) {
               IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
               IConsole[] existing = manager.getConsoles();
               boolean exists = false;
               for (int i = 0; i < existing.length; i++) {
                    if (console == existing[i])
                         exists = true;
               }
               if (!exists) {
                    manager.addConsoles(new IConsole[] { console });
               }
               manager.showConsoleView(console);

               MessageConsoleStream stream = console.newMessageStream();
               System.setOut(new PrintStream(stream));
          }
     }

     public static void closeConsole() {
          IConsoleManager manager = ConsolePlugin.getDefault().getConsoleManager();
          if (console != null) {
               manager.removeConsoles(new IConsole[] { console });
          }
     }

     public static MessageConsole getConsole() {
          return console;
     }
}
复制代码
这个是我从网上找到的类,另外在System.out.println之前调用ConsoleFactory.showConsole();
 
六、隐藏quickAccess
有时我们并不想显示右上角那个quickAccess,我们想办法去隐藏,并不是说手动关闭。
解决办法:
在org.eclipse.ui.startup拓展里执行(每次打开eclipse都执行):
复制代码
UIJob jobH = new UIJob("hide quick access") {
     @Override
     public IStatus runInUIThread(IProgressMonitor monitor) {
          IWorkbenchWindow window = PlatformUI.getWorkbench()
                    .getActiveWorkbenchWindow();
          if (window == null)
               return Status.CANCEL_STATUS;
          if (window instanceof WorkbenchWindow) {
               MTrimBar topTrim = ((WorkbenchWindow) window).getTopTrim();
               for (MTrimElement element : topTrim.getChildren()) {
                    if ("SearchField".equals(element.getElementId())) {
                         Control contorl = (Control) element.getWidget();
                         contorl.setVisible(false);
                         break;
                    }
               }
          }
          return Status.OK_STATUS;
     }
};
jobH.schedule(0L); 
复制代码
PS:没有找到一劳永逸的办法,网上传说的用样式可以隐藏是不行的。
 
七、文件自动更新
我这里说的是文件自动更新,并不是说eclipse自动更新,可以说只是更新部分eclipse内容。这里主要谈的是一种简单检查更新的办法,无后端服务实现。
服务端:
仅仅只是在服务器里面放这些资源,而里面的版本由一个version.properties决定,每一个版本对应一条记录。
 
客户端:
每次打开eclipse时,自动去下载远端version.properties文件,比对本地的version.properties文件。当有新的版本或者版本后面的时间戳有变更时候下载覆盖本地的文件。
 
功能篇就先到这里,其他篇章待续。
 
本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
本文地址 :http://www.cnblogs.com/lovesong/p/4694522.html

定制Eclipse IDE之功能篇(一)

上文回顾:定制Eclipse IDE之界面篇   这一篇文章将记录一些Eclipse插件拓展(extension),简单讲述常用拓展的用法,但可能不会那么详细。 我的主要插件的拓展如...
  • MitKey
  • MitKey
  • 2016年05月30日 09:58
  • 682

定制Eclipse IDE之插件篇(一)

上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来。 一、汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉...
  • MitKey
  • MitKey
  • 2016年05月30日 10:00
  • 1415

定制Eclipse IDE之插件篇(二)

上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana。 一、aptana插件 官方的解释我就不说了,从下面图可以看到插件...
  • MitKey
  • MitKey
  • 2016年05月30日 10:01
  • 1414

Java 之JNI基础篇(一)

JNI,即Java Native Interface。它其实就是一套java与本地代码交互的接口或者说是一个协议。通俗的比喻,就是中国人讲中国话,日本人讲日本话,于是中国人碰到日本人,各说各话,无法交...
  • yingshukun
  • yingshukun
  • 2018年01月13日 18:51
  • 10039

Java 之JNI基础篇(二)

上一篇完成了JNI流程的编写,现在来看看javah命令生成的本地方法 #include #include #include "Hello.h" JNIEXPORT void JNICALL...
  • yingshukun
  • yingshukun
  • 2018年01月21日 14:11
  • 9928

Eclipse - 定制Eclipse IDE之界面篇

为什么要定制IDE? 在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候, 我们可以做成一个产品,而这个产品将包括框架本身、文档、工具、教程等等。工具之中最重要的莫过于开发工具...
  • Anstoner
  • Anstoner
  • 2017年04月24日 06:42
  • 276

Spark编程指南入门之Java篇三-常用Transformations操作

7. 常用的转换Transformations操作 JavaRDD map(Function f) 将数据集的每一个元素按指定的函数f转换为一个新的RDD JavaRDD filter(Funct...
  • gangchengzhong
  • gangchengzhong
  • 2016年12月28日 16:20
  • 1260

定制Eclipse IDE之界面篇

为什么要定制IDE?      在工作时候,当公司有了自己的框架,给自己开放人员用,甚至是可以卖的时候,我们可以做成一个产品,而这个产品将包括框架本身、文档、工具、教程等等。工具之中最重要的莫过...
  • MitKey
  • MitKey
  • 2016年05月30日 09:56
  • 1154

定制Eclipse IDE之杂症篇

上文回顾:定制Eclipse IDE之插件篇(二) 该篇将讲述在开发Eclipse 插件过程发生的疑难杂症。不谈功能,只说病症。 前言、拿哪个Eclipse作为定制的基础? 我建议是你用...
  • MitKey
  • MitKey
  • 2016年05月30日 10:02
  • 235

hadoop之mapreduse 在Eclipse下的调试环境篇

搭建完成环境后,开始调试mapreduse程序。但是遇到不停的报错。本人很讨厌在自己的操作系统环境变量里设置来设置去,包括linux也是。通常喜欢把环境变量设置在启动程序的脚本中,让脚本自己运行的环境...
  • supperman_009
  • supperman_009
  • 2014年10月30日 17:23
  • 1584
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定制Eclipse IDE之功能篇(二)
举报原因:
原因补充:

(最多只允许输入30个字)