changecoloraction.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 73 行
JAVA
73 行
package net.sf.freenote.action;
import net.sf.freenote.FreeNoteConstants;
import net.sf.freenote.commands.ModelPropertyCommand;
import net.sf.freenote.parts.ConnectionEditPart;
import net.sf.freenote.parts.ShapeEditPart;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.ColorDialog;
import org.eclipse.ui.IWorkbenchPart;
/**
* 改变Figure前景色或背景色的action
* @author levin
* @since 2008-1-20 下午08:27:45
*/
public class ChangeColorAction extends SelectionAction {
//前景色 ForeColor,背景色 BackColor
private String colorProperty;
public ChangeColorAction(IWorkbenchPart part,String colorProperty) {
super(part);
this.colorProperty=colorProperty;
setText(colorProperty.equals(FreeNoteConstants.BACKCOLOR)?"改变背景色...":"改变前景色...");
setToolTipText("(批量)改变选中形体的颜色");
setId(FreeNoteConstants.CHANGE_COLOR+"."+colorProperty);
}
@Override
protected boolean calculateEnabled() {
//不为空,且有ShapeEditPart
if(getSelectedObjects().isEmpty())
return false;
for(Object o:getSelectedObjects())
if(o instanceof ShapeEditPart || o instanceof ConnectionEditPart)
return true;
return false;
}
@Override
public void run() {
//取第一个形体的颜色值传给colordialog
RGB value= null;
if(getSelectedObjects().get(0) instanceof ShapeEditPart)
value=(RGB) ((ShapeEditPart)getSelectedObjects().get(0)).getCastedModel().getPropertyValue(colorProperty);
if(getSelectedObjects().get(0) instanceof ConnectionEditPart)
value=(RGB) ((ConnectionEditPart)getSelectedObjects().get(0)).getCastedModel().getPropertyValue(colorProperty);
ColorDialog dialog=new ColorDialog(this.getWorkbenchPart().getSite().getShell());
if(value != null)
dialog.setRGB(value);
value=dialog.open();
//给所有形体设颜色
if(value != null){
CompoundCommand cc=new CompoundCommand();
for(Object part:getSelectedObjects()){
if(part instanceof ShapeEditPart){
cc.add(new ModelPropertyCommand(((ShapeEditPart)part).getCastedModel(),clone(value),colorProperty));
}
if(part instanceof ConnectionEditPart){
cc.add(new ModelPropertyCommand(((ConnectionEditPart)part).getCastedModel(),clone(value),colorProperty));
}
}
this.getCommandStack().execute(cc);
}
}
//克隆一下,以免xmlstream生成同一实例的引用
private RGB clone(RGB rgb){
return new RGB(rgb.red,rgb.green,rgb.blue);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?