博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
定制Eclipse IDE之功能篇(二)
阅读量:6932 次
发布时间:2019-06-27

本文共 4041 字,大约阅读时间需要 13 分钟。

上文回顾:
 
这一篇文章将记录一些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文件。当有新的版本或者版本后面的时间戳有变更时候下载覆盖本地的文件。
 
功能篇就先到这里,其他篇章待续。
 
本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。
本文地址 :
你可能感兴趣的文章
【机器学习-西瓜书】一、绪论
查看>>
tableView 选中cell时,获取到当前cell
查看>>
[笔迹]java-其他
查看>>
第x次安装Debian6
查看>>
js 验证表单 js提交验证类
查看>>
MySQL--query-cache
查看>>
Android使用XML全攻略(2)
查看>>
[USACO08FEB]酒店Hotel
查看>>
卫生纸效果,哈哈
查看>>
mysql导入excel数据
查看>>
Java中写入文件时换行符用"\r\n"、"\n"、"\r"?
查看>>
AIX 命令
查看>>
安装终端服务和终端服务授权,激活终端服务授权
查看>>
朋友,别在降低别人底线或被别人降低底线了!
查看>>
先考学历还是先提升能力?
查看>>
软件项目开发无成熟框架套路之成本代价
查看>>
设计模式(3)-装扮你的类(装饰模式)
查看>>
Android 数字签名学习笔记
查看>>
Linux下Gedit + Gmate ,实用的编辑器
查看>>
OO学习之二——面向对象分析(OOD)的介绍
查看>>