前几天看一个开源项目,发现GEF中的Palette样式与自己经常用的样式不一样
见图一和图二,我觉得图二的样式比较好看,呵呵
于是查看了下代码,最后定位到PaletteViewerProvider类上,
/**
* This method is invoked from {@link #configurePaletteViewer(PaletteViewer)}. It
* configures the given viewer's settings.
* @param viewer the viewer that is to be configured
*/
protected void configurePaletteViewer(PaletteViewer viewer) {
viewer.setContextMenu(new PaletteContextMenuProvider(viewer));
}
从上面的代码可以看出PaletteViewer 增加了一个右键菜单,而PaletteContextMenuProvider中则提供了好多样式
/**
* This is the method that builds the context menu.
*
* @param menu The IMenuManager to which actions for the palette's context menu can
* be added.
* @see ContextMenuProvider#buildContextMenu(org.eclipse.jface.action.IMenuManager)
*/
public void buildContextMenu(IMenuManager menu) {
GEFActionConstants.addStandardActionGroups(menu);
Object selectedPart = getPaletteViewer().getSelectedEditParts().get(0);
if (selectedPart instanceof DrawerEditPart
&& ((DrawerEditPart)selectedPart).canBePinned()) {
menu.appendToGroup(GEFActionConstants.MB_ADDITIONS,
new PinDrawerAction((DrawerEditPart)selectedPart));
}
menu.appendToGroup(GEFActionConstants.GROUP_VIEW, new LayoutAction(
getPaletteViewer().getPaletteViewerPreferences()));
menu.appendToGroup(GEFActionConstants.GROUP_VIEW, new ChangeIconSizeAction(
getPaletteViewer().getPaletteViewerPreferences()));
if (getPaletteViewer().getCustomizer() != null) {
menu.appendToGroup(GEFActionConstants.GROUP_REST,
new CustomizeAction(getPaletteViewer()));
}
menu.appendToGroup(GEFActionConstants.GROUP_REST,
new SettingsAction(getPaletteViewer()));
}
剩下的事情就好办了,在GraphicalEditorWithFlyoutPalette的实现类中覆盖下面方法
@Override
protected PaletteViewerProvider createPaletteViewerProvider() {
return new PaletteViewerProvider(getEditDomain()) {
@Override
protected void configurePaletteViewer(PaletteViewer viewer) {
viewer.addDragSourceListener(new TemplateTransferDragSourceListener(viewer));
viewer.setContextMenu(new PaletteContextMenuProvider(viewer));
}
@Override
public PaletteViewer createPaletteViewer(Composite parent) {
pViewer = new PaletteViewer();
pViewer.createControl(parent);
configurePaletteViewer(pViewer);
hookPaletteViewer(pViewer);
return pViewer;
}
};
}
这下在Palette上点击右键的时候就可以看到弹出菜单,菜单中拥有了一些给定的样式
,图三的右键弹出菜单
可是如果要程度打开的时候就显示图二的样式应该怎么办呢,下面代码段可以实现
pViewer.getPaletteViewerPreferences().setLayoutSetting(PaletteViewerPreferences.LAYOUT_COLUMNS);
pViewer.getPaletteViewerPreferences().setUseLargeIcons(PaletteViewerPreferences.LAYOUT_COLUMNS, true);
但要把它放在
@Override
protected void configureGraphicalViewer()
方法中,否则会报空指针
- 描述: 右键弹出菜单
- 大小: 7.2 KB
- 描述: 新发现的
- 大小: 3.6 KB
- 描述: 经常用的
- 大小: 3.5 KB
分享到:
相关推荐
此库包含了丰富的控件和工具,如ActionBar、ToolBar、Material Design样式等,极大地扩展了Android开发的可能性。 在AppCompat库中,Palette是一个非常有用的工具,它允许开发者从图像中提取出主要的颜色,并用于...
它通过ViewHolder模式提高了列表渲染速度,并且支持多种布局管理器,如线性布局、网格布局等,使得布局设计更为灵活。 2. **CardView**:CardView是Android设计支持库中的一个视图容器,用于创建卡片式UI。这种组件...
Eclipse Palette是一款针对Eclipse集成开发环境(IDE)的扩展工具,主要专注于提升代码编写时的颜色和样式体验。它通过自定义颜色主题和代码高亮,帮助开发者创建更个性化、更舒适的编程环境,从而提高编码效率。在...
"character-palette"插件通过监听用户在输入框中的焦点事件,动态生成一个包含多种字符和表情的调色板。当用户点击调色板中的字符时,该字符会插入到当前光标位置。这个过程涉及到jQuery的事件监听、DOM操作和字符串...
"Color-palette"可能会支持这些格式,让设计师能直接将选定的颜色应用于CSS样式表。 3. **调色板工具**:这样的工具通常提供交互式的界面,允许用户选择、调整和保存颜色。"Color-palette"可能有滑块、输入框或色轮...
其中,"Basic-Gradient-Palette"是一款专为Sketch设计的Library,它集成了多种渐变色彩,旨在提升设计师在原型制作过程中的效率和创意。 渐变在现代设计中扮演着不可或缺的角色,它可以增加视觉层次感,使设计作品...
"color-palette"这一概念,直译为“颜色调色板”,在CSS(层叠样式表)中,指的是用于定义和管理网页颜色的一系列工具和方法。本文将深入探讨如何在CSS中创建和使用自定义颜色调色板,以及它在网页设计中的重要性。 ...
### Chart控件的多种用法 #### 一、概述 Chart 控件是.NET Framework中用于图形数据展示的强大工具,能够帮助开发者快速实现各种图表的显示功能。本文将详细介绍Chart控件的基本使用方法,并通过示例代码来展示...
Rapiddo的风格指南将规定这些提示的样式,包括颜色、文字、动画效果等,以确保一致性并减少用户困惑。 此外,指南可能还会涵盖其他元素,如过渡动画、触摸反馈、错误处理策略等。每个细节都对整体体验产生影响,...
风格主题:nail_polish_dark_skin_tone: 主题系统 安装$ npm install --save styled-theme用法在上import styled from 'styled-components'import { font , palette } from 'styled-theme'const Text = styled ....
柔和的 :artist_palette: Pastel是一个用于从Markdown生成漂亮的API文档的工具。 用Markdown编写文档,然后让Pastel将其转换为HTML页面,并完成以下操作: 移动响应 多种语言的代码示例的语法突出显示 目录以便于...
"typedoc-default-themes"是TypeDoc的默认主题集合,包括多种样式供用户选择。Vortex主题则对这些默认主题进行了个性化调整,旨在提供更吸引人的视觉体验,可能包括独特的颜色方案、布局和交互设计。 "::cyclone::...
"qsseditor"可能使用了QScintilla组件,这是一个源代码编辑部件,支持多种编程语言,包括QSS。它提供了语法高亮、代码折叠、自动完成等特性,提升了编辑体验。 5. **QtC++与QSS的结合** QtC++应用程序可以通过...
首先,调色板生成器的核心功能是创建多种颜色组合,这些颜色通常以六字符的十六进制代码表示,如 "#FF0000" 表示红色。在网页设计中,十六进制颜色代码是一种广泛使用的标准,因为它可以精确地定义色彩,且兼容性强...
numpy是用于科学计算的基础软件包,支持大量的维度数组和矩阵运算,而PIL则是一个强大的图像处理库,可以进行图像读取、修改和保存等多种操作。当用户上传图片时,系统首先使用PIL读取图像,然后通过numpy进行颜色...
"artist_palette"可能是指该工具提供的多种颜色方案或样式,以满足用户对视觉效果的不同需求。 在描述中提到的功能,"在‘terraform plan’的执行结果上为:artist_palette:个不同的属性行着色",意味着tpdiff能够...
该组件库的核心是 RzPaletteMenu,它是一种可自定义的多层菜单组件,支持多种显示样式和交互方式。开发者可以根据需求调整菜单的布局、颜色、字体等视觉元素,甚至可以实现动态加载和更新菜单项,以适应不同场景下的...
这个 FireMonkey Premium Styles Pack 包含了多种预定义的样式,这些样式可以轻松应用于 FireMonkey 的组件,如按钮、文本框、面板、菜单等。这些样式通常包含了色彩方案、字体设置、边框样式、阴影效果以及动画等,...
使用`setStyleSheet`方法可以更方便地自定义按钮的外观,包括字体、边框、大小等多种属性。这种方式更为灵活,允许我们使用CSS样式的语法来定制UI。 在实际开发中,可能还需要考虑到不同状态下的按钮颜色变化,比如...