`
小嘴冰凉
  • 浏览: 457329 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Palette的多种样式

    博客分类:
  • gef
阅读更多
前几天看一个开源项目,发现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
分享到:
评论
1 楼 凝血神抓 2009-06-25  

相关推荐

    android-support-v7-appcompat.rar with Palette

    此库包含了丰富的控件和工具,如ActionBar、ToolBar、Material Design样式等,极大地扩展了Android开发的可能性。 在AppCompat库中,Palette是一个非常有用的工具,它允许开发者从图像中提取出主要的颜色,并用于...

    Android 5.0 新组件Demo

    它通过ViewHolder模式提高了列表渲染速度,并且支持多种布局管理器,如线性布局、网格布局等,使得布局设计更为灵活。 2. **CardView**:CardView是Android设计支持库中的一个视图容器,用于创建卡片式UI。这种组件...

    EclipsePalette

    Eclipse Palette是一款针对Eclipse集成开发环境(IDE)的扩展工具,主要专注于提升代码编写时的颜色和样式体验。它通过自定义颜色主题和代码高亮,帮助开发者创建更个性化、更舒适的编程环境,从而提高编码效率。在...

    character-palette:用于将字符调色板附加到输入的 jQuery 插件

    "character-palette"插件通过监听用户在输入框中的焦点事件,动态生成一个包含多种字符和表情的调色板。当用户点击调色板中的字符时,该字符会插入到当前光标位置。这个过程涉及到jQuery的事件监听、DOM操作和字符串...

    Color-palette:满足您的调色板

    "Color-palette"可能会支持这些格式,让设计师能直接将选定的颜色应用于CSS样式表。 3. **调色板工具**:这样的工具通常提供交互式的界面,允许用户选择、调整和保存颜色。"Color-palette"可能有滑块、输入框或色轮...

    Basic-Gradient-Palette:具有几个渐变的Sketch Library,可满足您的原型制作需求

    其中,"Basic-Gradient-Palette"是一款专为Sketch设计的Library,它集成了多种渐变色彩,旨在提升设计师在原型制作过程中的效率和创意。 渐变在现代设计中扮演着不可或缺的角色,它可以增加视觉层次感,使设计作品...

    color-palette

    "color-palette"这一概念,直译为“颜色调色板”,在CSS(层叠样式表)中,指的是用于定义和管理网页颜色的一系列工具和方法。本文将深入探讨如何在CSS中创建和使用自定义颜色调色板,以及它在网页设计中的重要性。 ...

    Chart控件的多种用法

    ### Chart控件的多种用法 #### 一、概述 Chart 控件是.NET Framework中用于图形数据展示的强大工具,能够帮助开发者快速实现各种图表的显示功能。本文将详细介绍Chart控件的基本使用方法,并通过示例代码来展示...

    rapiddo-ios-style-guide::artist_palette:Rapiddo iOS的样式指南

    Rapiddo的风格指南将规定这些提示的样式,包括颜色、文字、动画效果等,以确保一致性并减少用户困惑。 此外,指南可能还会涵盖其他元素,如过渡动画、触摸反馈、错误处理策略等。每个细节都对整体体验产生影响,...

    样式主题:样式组件的可扩展主题系统:nail_polish:

    风格主题:nail_polish_dark_skin_tone: 主题系统 安装$ npm install --save styled-theme用法在上import styled from 'styled-components'import { font , palette } from 'styled-theme'const Text = styled ....

    pastel:在Markdown中编写您的API文档,然后将其转换为漂亮HTML:artist_palette:

    柔和的 :artist_palette: Pastel是一个用于从Markdown生成漂亮的API文档的工具。 用Markdown编写文档,然后让Pastel将其转换为HTML页面,并完成以下操作: 移动响应 多种语言的代码示例的语法突出显示 目录以便于...

    typedoc-vortex-theme::cyclone::artist_palette:Vortex文档的TypeDoc主题

    "typedoc-default-themes"是TypeDoc的默认主题集合,包括多种样式供用户选择。Vortex主题则对这些默认主题进行了个性化调整,旨在提供更吸引人的视觉体验,可能包括独特的颜色方案、布局和交互设计。 "::cyclone::...

    qsseditor::artist_palette:跨平台应用程序可编辑和预览Qt样式表(QSS)

    "qsseditor"可能使用了QScintilla组件,这是一个源代码编辑部件,支持多种编程语言,包括QSS。它提供了语法高亮、代码折叠、自动完成等特性,提升了编辑体验。 5. **QtC++与QSS的结合** QtC++应用程序可以通过...

    Random-Color-Palette-Generator:这将生成带有其十六进制代码的随机调色板

    首先,调色板生成器的核心功能是创建多种颜色组合,这些颜色通常以六字符的十六进制代码表示,如 "#FF0000" 表示红色。在网页设计中,十六进制颜色代码是一种广泛使用的标准,因为它可以精确地定义色彩,且兼容性强...

    color-palette-generator:通过识别用户提供的图像中最常见的颜色来生成调色板的Flask网站

    numpy是用于科学计算的基础软件包,支持大量的维度数组和矩阵运算,而PIL则是一个强大的图像处理库,可以进行图像读取、修改和保存等多种操作。当用户上传图片时,系统首先使用PIL读取图像,然后通过numpy进行颜色...

    tpdiff:在“ terraform plan”的执行结果上为:artist_palette:个不同的属性行着色

    "artist_palette"可能是指该工具提供的多种颜色方案或样式,以满足用户对视觉效果的不同需求。 在描述中提到的功能,"在‘terraform plan’的执行结果上为:artist_palette:个不同的属性行着色",意味着tpdiff能够...

    RaizePaletteMenu70

    该组件库的核心是 RzPaletteMenu,它是一种可自定义的多层菜单组件,支持多种显示样式和交互方式。开发者可以根据需求调整菜单的布局、颜色、字体等视觉元素,甚至可以实现动态加载和更新菜单项,以适应不同场景下的...

    FireMonkey_Premium_Styles_Pack_for_RAD_Studio_10.1_and_10.2_Downloadly.ir.rar

    这个 FireMonkey Premium Styles Pack 包含了多种预定义的样式,这些样式可以轻松应用于 FireMonkey 的组件,如按钮、文本框、面板、菜单等。这些样式通常包含了色彩方案、字体设置、边框样式、阴影效果以及动画等,...

    经过验证的改变按钮背景颜色的代码

    使用`setStyleSheet`方法可以更方便地自定义按钮的外观,包括字体、边框、大小等多种属性。这种方式更为灵活,允许我们使用CSS样式的语法来定制UI。 在实际开发中,可能还需要考虑到不同状态下的按钮颜色变化,比如...

Global site tag (gtag.js) - Google Analytics