这一篇文章将记录一些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之功能篇(二)的更多相关文章

  1. 定制Eclipse IDE之功能篇(一)

    上文回顾:定制Eclipse IDE之界面篇   这一篇文章将记录一些Eclipse插件拓展(extension),简单讲述常用拓展的用法,但可能不会那么详细. 我的主要插件的拓展如下:   一.or ...

  2. 定制Eclipse IDE之插件篇(一)

    上文回顾:定制Eclipse IDE之功能篇(二) 在这篇文章中,我会将我定制eclipse用到的其他插件罗列出来. 一.汉化插件 Eclipse本身是英文显示的,我们能够通过插件汉化.  1. 选择 ...

  3. 定制Eclipse IDE之插件篇(二)

    上文回顾:定制Eclipse IDE之插件篇(一) 延续上一篇的插件篇,这一篇将会讲到一个最关键的插件aptana. 一.aptana插件 官方的解释我就不说了,从下面图可以看到插件提供了什么功能,列 ...

  4. 定制Eclipse IDE之杂症篇

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

  5. 定制Eclipse IDE之界面篇

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

  6. 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇

    Eclipse Memory Analyzer Tool(MAT)相关文章目录: 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇 使 ...

  7. Maven、gradle、Ant、Eclipse IDE

    Maven.gradle.Ant.Eclipse IDE之间的关系 http://wenku.baidu.com/view/d33208810912a21615792910.html?from=sea ...

  8. Eclipse IDE for C/C++ Developers安装配置详解

    Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...

  9. eclipse ide for java ee developers 开发环境搭建(j2ee)

    转载自:http://www.iteye.com/topic/982182 真的是一片很不错的文章啊! 使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指 ...

随机推荐

  1. Ajax在IE浏览器会出现中文乱码解决办法

    在AJAX浏览器来进行发送数据时,一般它所默认的都是UTF-8的编码. Ajax在IE浏览器会出现中文乱码的情况!解决办法如下 <script type="text/javascrip ...

  2. poj3342Party at Hali-Bula(树形dp)

    /* 树形dp! 判重思路: 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的.flag[u][1]则不然, 因为它只和dp[v][0]有关系.而若flag[v ...

  3. Kruskal算法(一)之 C语言详解

    本章介绍克鲁斯卡尔算法.和以往一样,本文会先对克鲁斯卡尔算法的理论论知识进行介绍,然后给出C语言的实现.后续再分别给出C++和Java版本的实现. 目录 1. 最小生成树 2. 克鲁斯卡尔算法介绍 3 ...

  4. equals和==的区别 你真的掌握了吗?

    PS:最近读Java编程思想的时候发现了一些小问题.就是equals方法和==,感觉自己是真正掌握了,其实并没有.简单的记录一下. 学习内容: 1.equals 和 == 的区别  equals和== ...

  5. Redis Lua脚本原理

    2.6版本之后支持嵌入Lua脚本,客户端使用Lua脚本,直接在服务器端原子的执行多条命令 Lua脚本执行过程 创建并修改Lua环境 1 创建基础Lua环境 2 载入函数库 3 创建全局表格Lua 4 ...

  6. jQuery 实现bootstrapValidator下的全局验证

    前置: 引入jQuery.bootstrap.bootstrapValidator 问题描述: 项目中要求所有的表单输入框中都不能输入&符号.没有在bootstrap中找到有方法可用,只能自己 ...

  7. Qt实现小功能之列表无限加载

    概念介绍 无限加载与瀑布流的结合在Web前端开发中的效果非常新颖,对于网页内容具备较好的表现形式.无限加载并没有一次性将内容全部加载进来,而是通过监听滚动条事件来刷新内容的.当用户往下拖动滚动条或使用 ...

  8. C#以管理员身份运行程序

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; names ...

  9. java开源时间/日期库Joda-Time

    任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.现在来看看 Joda Time,一 ...

  10. 【SQL】统计所有表的行数

    环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...