changepropertiesaction.java
来自「mywork是rcp开发的很好的例子」· Java 代码 · 共 106 行
JAVA
106 行
package net.sf.freenote.action;
import net.sf.freenote.FreeNoteConstants;
import net.sf.freenote.model.ModelElement;
import net.sf.freenote.parts.ConnectionEditPart;
import net.sf.freenote.parts.ShapeEditPart;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import org.eclipse.gef.ui.actions.SelectionAction;
import org.eclipse.gef.ui.properties.UndoablePropertySheetEntry;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.views.properties.IPropertySource;
import org.eclipse.ui.views.properties.PropertySheetPage;
/**
* 查看/编辑属性,修改属性不能undo
* 属性编辑器简化处理
* @author levin
* @since 2008-2-9 下午09:43:17
*/
public class ChangePropertiesAction extends SelectionAction {
public ChangePropertiesAction(IWorkbenchPart part) {
super(part);
setText("属性...");
setToolTipText("查看/编辑形体的属体");
setId(FreeNoteConstants.PROPERTY_EDITOR);
}
@Override
protected boolean calculateEnabled() {
if (getSelectedObjects().size() == 1 && (getSelectedObjects().get(0) instanceof ShapeEditPart || getSelectedObjects().get(0) instanceof ConnectionEditPart)) {
return true;
}
return false;
}
@Override
public void run() {
try{
ModelElement shape =(ModelElement) ((AbstractGraphicalEditPart) getSelectedObjects().get(0)).getModel();
ObjectPropertyDialog opd=new ObjectPropertyDialog(getWorkbenchPart().getSite().getShell(),shape);
opd.open();
}catch(Exception ex){
;
}
}
/**
* 对象编辑器对话框
* @author levin
* @since 2008-2-9 下午09:50:42
*/
class ObjectPropertyDialog extends Dialog {
//用来定制的bean
private IPropertySource bean;
public ObjectPropertyDialog(Shell parent,IPropertySource bean) {
super(parent);
this.bean=bean;
}
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
GridLayout gl=new GridLayout();
gl.verticalSpacing = 8;
composite.setLayout(gl);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
Label nameLabel=new Label(composite,SWT.NONE);
GridData listGridData = new GridData(SWT.LEFT,SWT.TOP,true,false,1,1);
listGridData.minimumWidth=240;
nameLabel.setLayoutData(listGridData);
PropertySheetPage psp = new PropertySheetPage();
psp.createControl(composite);
psp.setRootEntry(new UndoablePropertySheetEntry(getCommandStack()));
GridData gridData=new GridData(GridData.FILL_BOTH);
psp.getControl().setLayoutData(gridData);
psp.selectionChanged(null,new StructuredSelection(bean));
nameLabel.setText("类:"+bean.getClass().getName());
return composite;
}
protected Point getInitialSize() {
return new Point(400,320);
}
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("属性查看器");
}
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL,true);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?