首页 > 代码库 > eclipse 4插件rcp支持Css切换
eclipse 4插件rcp支持Css切换
eclipe 4以上的插件就支持CSS主题切换的功能
plugin.xml 中扩展点org.eclipse.core.runtime.products、org.eclipse.e4.ui.css.swt.theme
<extension id="product" point="org.eclipse.core.runtime.products"> <product application="org.eclipse.e4.ui.examples.css.rcp.application" name="CSS Mail Example"> <property name="aboutText" value=http://www.mamicode.com/"CSS RCP Mail template">>ThemeHelperl类用于生成主题引擎(用于不同css之间切换)
import org.eclipse.core.runtime.Platform; import org.eclipse.e4.ui.css.swt.theme.IThemeEngine; import org.eclipse.e4.ui.css.swt.theme.IThemeManager; import org.eclipse.e4.ui.examples.css.rcp.Activator; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PlatformUI; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; /** * 提供获得主题引擎 * @author Administrator * */ @SuppressWarnings("restriction") public class ThemeHelper { private static IThemeEngine engine = null; private static Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID); public static IThemeEngine getEngine() { if (engine == null) { engine = getThemeEngine(); } return engine; } private static IThemeEngine getThemeEngine() { BundleContext context = bundle.getBundleContext(); ServiceReference ref = context.getServiceReference(IThemeManager.class.getName()); IThemeManager manager = (IThemeManager) context.getService(ref); return manager.getEngineForDisplay(PlatformUI.getWorkbench() .getActiveWorkbenchWindow() == null ? Display.getCurrent() : PlatformUI.getWorkbench().getActiveWorkbenchWindow() .getShell().getDisplay()); } }用于切换主题的操作import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.e4.ui.examples.css.rcp.theme.ThemeHelper; /** * 切换主题的实现类 * @author Administrator * */ public class SwitchTheme extends AbstractHandler { private boolean reset = false; private final static String USER_CSS_DEFAULT = "org.eclipse.e4.ui.examples.css.rcp";//plugin.xml中的主题ID private final static String USER_CSS_COLORFUL = "org.eclipse.e4.ui.examples.css.colorful"; public Object execute(ExecutionEvent event) throws ExecutionException { String themeId = ""; if (reset) { // toggle functionality of the menu item themeId = USER_CSS_DEFAULT; } else { themeId = USER_CSS_COLORFUL; } reset = !reset; ThemeHelper.getEngine().setTheme(themeId, true); return null; } }Plugin.xml中设置的command<extension point="org.eclipse.ui.commands"><!--用户添加菜单项到相应的位置--> <command defaultHandler="org.eclipse.e4.ui.examples.css.rcp.handler.SwitchTheme" id="org.eclipse.e4.ui.examples.css.rcp.switchtheme" name="Switch Theme"><!--切换主题的操作--> </command> </extension><extension point="org.eclipse.ui.menus"> <menuContribution allPopups="false" locationURI="menu:org.eclipse.ui.main.menu"> <menu label="Styling"> <command commandId="org.eclipse.e4.ui.examples.css.rcp.switchtheme" label="Switch Styling" style="push"> </command> </menu> </menuContribution> </extension>把command绑定到菜单栏中<extension point="org.eclipse.ui.menus"> <menuContribution allPopups="false" locationURI="menu:org.eclipse.ui.main.menu"> <menu label="Styling"> <command commandId="org.eclipse.e4.ui.examples.css.rcp.switchtheme" label="Switch Styling" style="push"> </command> </menu> </menuContribution> </extension>ApplicationWorkbenchAdvisor 中可以用代码一开始指定某个主题public void initialize(IWorkbenchConfigurer configurer) { super.initialize(configurer); /**设置系统的默认主题风格*/ Bundle b = FrameworkUtil.getBundle(getClass()); BundleContext context = b.getBundleContext(); ServiceReference serviceRef = context .getServiceReference(IThemeManager.class.getName()); IThemeManager themeManager = (IThemeManager) context .getService(serviceRef); final IThemeEngine engine = themeManager.getEngineForDisplay(Display .getCurrent()); engine.setTheme("org.eclipse.e4.ui.examples.css.rcp", true); if (serviceRef != null) { serviceRef = null; } if (themeManager != null) { themeManager = null; } }css 样式colorful.cssCTabItem, Label, Tree, Text { font-family: "Arial"; } Shell { font-size: 12; } CTabItem, ToolBar, Button, CBanner, CoolBar { font-size: 9; background-color: green; } CTabFolder, CTabItem { background-color: red; } CTabItem:selected { background-color: blue; } Text { font-size: 11; color: #666666; background-color: red; } #navigation { font-size: 8; color: orange; background-color: blue; } .messageBanner { background-color: yellow; } .messageBanner Composite, Label, Link { background-color: pink; } .messageSender { color: #3e9cfa; font-size: 11; } .messageDate { color: #808080; font-size: 9; } .messageSubjectUnRead { font-size: 14; font-style: italic; font-weight: bold; color: red; } .messageSubjectRead { font-size: 12; font-style: normal; font-weight: normal; color: green; }
工程下载:http://download.csdn.net/detail/luoww1/7425369
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。