`
liugang594
  • 浏览: 981946 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

增加Palette的拖放支持

    博客分类:
  • GEF
 
阅读更多

默认情况下,GEF中要创建一个新的结点都是通点在Palette上选择一个结点,然后在Editor区域单击实现的。

 

也有一些是通过拖放Palette中的一个对象到Editor区域来实现的。

 

要实现一个拖放支持也是很容易的。GEF中默认实现了一组drag-drop listener用来支持拖放实现:

 

1。TemplateTransferDropTargetListener

 

     因为是要从palette上拖到Editor中,所以此监听事件显示是应该安放在Editor上,在GEF中就是GraphicalViewer,可以在initializeGraphicalViewer()方法中加上:

 

getGraphicalViewer().addDropTargetListener(new TemplateTransferDropTargetListener(
      getGraphicalViewer()));

 

2。TemplateTransferDragSourceListener

 

     显示此事件需要加在palette上,也就是PaletteViewer上,可以在initializePaletteViewer()方法中加上:

 

getPaletteViewer().addDragSourceListener(new TemplateTransferDragSourceListener(getPaletteViewer()));

 

回头再看一下我们对Palette上的Item的声明:

 

 CombinedTemplateCreationEntry(String label, String shortDesc,
  CreationFactory factory, ImageDescriptor iconSmall, ImageDescriptor iconLarge)

 

需要注意CombinedTemplateCreationEntry构造方法的选用。认为上述构造方法为默认选择,而CreationFactory类为SimpleFactory。

 

如果选择另一个构造方法:

 

CombinedTemplateCreationEntry(String label, String shortDesc, Object template,
  CreationFactory factory, ImageDescriptor iconSmall, ImageDescriptor iconLarge)

 

则我们需要注意:如果template和factory都是SimpleFactory则没有问题,因为默认的template就是SimpleFactory。否则我们需要根据自己的template值来得到对应的model,也就是要实现自己的CreationFactory。例如:

 

		CombinedTemplateCreationEntry elementCreationEntry = new CombinedTemplateCreationEntry(
				"Element", "Element type",ModelCreationFactory.ELEMENT_TYPE,new ModelCreationFactory(ModelCreationFactory.ELEMENT_TYPE), Activator
						.getImageDescriptor("icons/element.png"), Activator
						.getImageDescriptor("icons/element.png"));
		CombinedTemplateCreationEntry attributeCreationEntry = new CombinedTemplateCreationEntry(
				"Attribute", "Attribute type",ModelCreationFactory.ATTRIBUTE_TYPE, new ModelCreationFactory(ModelCreationFactory.ATTRIBUTE_TYPE), Activator
						.getImageDescriptor("icons/attribute.png"), Activator
						.getImageDescriptor("icons/attribute.png"));

 

		getGraphicalViewer().addDropTargetListener(new CustomTemplateTransferDropTargetListener(
						getGraphicalViewer()));

 

 

public class ModelCreationFactory implements CreationFactory {

	private int objectType;

	public static final int ELEMENT_TYPE = 0x01;
	public static final int ATTRIBUTE_TYPE = 0x02;
	public static final int ROOT_TYPE = 0x04;

	public ModelCreationFactory(int objectType) {
		super();
		this.objectType = objectType;
	}

	public Object getNewObject() {
		switch (objectType) {
		case ELEMENT_TYPE:
			return new ElementType();
		case ATTRIBUTE_TYPE:
			return new AttributeType();
		case ROOT_TYPE:
			return new RootType();
		default:
			break;
		}
		return null;
	}

	public Object getObjectType() {
		return objectType;
	}

}

 

public class CustomTemplateTransferDropTargetListener extends
		TemplateTransferDropTargetListener {

	public CustomTemplateTransferDropTargetListener(EditPartViewer viewer) {
		super(viewer);
	}

	@Override
	protected CreationFactory getFactory(Object template) {
		return new ModelCreationFactory(((Integer)template).intValue());
	}

}

 

分享到:
评论

相关推荐

    明基Palette Master校正显示器软件-Palette Master Ultimate for Windows

    明基Palette Master支持硬件自动校准,简化校正并确实地产生正确的色彩结果。 Palette Master 可以用来校正显示器的色彩引擎,并完全支支持 X-Rite 色度计/分光仪。 除了可在短时间内提供可靠的校正外,Palette ...

    Android颜色拾取Palette

    "Android颜色拾取Palette"是一个强大的工具,它允许开发者从图像中提取主要和次要的颜色,并将这些颜色应用到应用程序的不同元素上,如状态栏、标题栏、ToolBar等,以实现更加美观且一致的视觉效果。这个功能尤其...

    Palettedemo

    《Android 5.x—Palette 深度解析与实践》 在Android开发中,我们经常需要处理图片资源,而Android 5.x引入了一个强大的新工具——Palette,它可以帮助开发者从图像中提取关键颜色,用于界面主题的动态设定,提供更...

    v7兼容包Palette的使用

    在Android开发中,`Palette`是Google在API Level 21(Android 5.0 Lollipop)引入的一个重要工具类,用于从Bitmap图像中提取出关键颜色,以便于实现与图片色调相协调的UI设计。`Palette`可以快速地分析图片,并从中...

    PaletteDemo

    【标题】"PaletteDemo"揭示了Android开发中的一个重要概念,即Palette库的使用。Palette是Android SDK中的一个工具,主要用于从图像中提取出主要的颜色,帮助开发者创建与图像色彩协调的UI界面。这个Demo旨在展示...

    android Palette和RoundedBitmapDrawable的实践

    在Android开发中,`Palette`和`RoundedBitmapDrawable`是两个非常实用的工具,尤其在处理图像资源和用户界面的视觉效果时。`Palette`主要用于从图片中提取颜色,以便自定义UI组件的颜色风格,而`...

    palette的jar包

    palette的jar包,放在libs目录里面,build path就可以使用了

    Android Material Design之Toolbar与Palette实践

    Android Studio是Google官方推荐的集成开发环境(IDE),对于实现Material Design提供了强大的支持。本文将深入探讨如何在Android应用中实现Material Design中的两个关键组件:Toolbar和Palette,并结合...

    RecyclerView+CardView+Palette Demo

    一个集成RecyclerView+CardView+Palette的Demo

    Palette实现原理(外送利用viewpager实现“无限循环”和ImageView的复用年终礼包)

    【标题】:Palette实现原理与ViewPager应用详解 在Android开发中,我们常常需要从图片中提取出主要的颜色,以适应界面的主题或者作为界面的色彩基础。这就是Android提供的Palette库的作用,它可以从Bitmap中提取出...

    利用Palette取得Bitmap图像中的主要色彩

    此外,Palette还支持回调机制,可以注册一个回调监听器,当生成过程完成时会得到通知: ```java palette.generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { ...

    swift-iOS图片精确提取主色调算法iOS-Palette

    `swift-iOS图片精确提取主色调算法iOS-Palette`项目提供了一种高效的方法来实现这一功能,尤其适用于Swift开发者。这个项目的核心是通过算法分析图像像素,找出最能代表图片整体色彩的主色调。 iOS-Palette库使用了...

    PaletteDemo(安卓颜色拾取)

    此外,`Palette`库也支持自定义颜色采样和调整。例如,你可以通过设置`Swatch`的数量和色调范围来定制颜色提取过程: ```java Palette.Builder builder = Palette.from(bitmap); buildermaximumColorCount(6); // ...

    Android 5.X 新特性详解(一)——主题、Palette、阴影、着色和裁剪

    **阴影(Shadows)**是Material Design中的核心元素之一,它为UI组件增加了深度感。Android 5.X引入了`CardView`和`RecyclerView`等组件,它们自然地支持阴影效果。`CardView`通过设置`cardElevation`属性,可以为...

    调色板Palette使用

    `Palette`库是Android SDK提供的一种工具,用于从图像中提取关键颜色并将其应用于UI元素,从而实现与图像色彩协调一致的界面设计。本文将深入探讨如何使用`Palette`进行图片渲染,以及在实际应用中的技巧。 ### `...

    Android 5.0 新组件Demo

    这个"Android 5.0 新组件Demo"是针对这些改进的一个实践示例,让我们来深入探讨其中的核心组件:RecyclerView、CardView和Palette。 1. **RecyclerView**:RecyclerView是Android 5.0引入的替代ListView的视图组件...

    捕获颜色,输出RGB值palette.js.zip

    palette.js 是一个能够识别图像、图表、制图中色彩颜色元素的插件,还能输出颜色的 RGB 值。 标签:palette 分享 window._bd_share_config = ...

    android-support-v7-palette

    android-support-v7-palette 工具库

    android-support-v7-palette.jar

    android-support-v7-palette.jar

Global site tag (gtag.js) - Google Analytics