/** * Դ�������ƣ�OracleUserPrivilegeEditor.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.database.oracle.ui * ����˵����$desc * ����ĵ��� * ���ߣ����� */ package com.hundsun.ares.studio.jres.database.oracle.ui.editors; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import com.hundsun.ares.studio.jres.model.database.oracle.OraclePrivilege; import com.hundsun.ares.studio.jres.model.database.oracle.OracleUserResourceData; import com.hundsun.ares.studio.jres.model.database.oracle.impl.OracleUserImpl; /** * @author wangbin * */ public class OracleUserPrivilegeEditor extends OracleUserPrivilegeSelectionCellEditor { /** * @param parent * @param fromText * @param toText */ private ColumnViewer columnViewer; public OracleUserPrivilegeEditor(ColumnViewer columnViewer, String fromText, String toText) { super((Composite) columnViewer.getControl(), fromText, toText); this.columnViewer = columnViewer; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.DialogCellEditor#doGetValue() */ @Override protected Object doGetValue() { OracleUserImpl index = (OracleUserImpl)((StructuredSelection)columnViewer.getSelection()).getFirstElement(); EList<OraclePrivilege> oldList =((OracleUserResourceData) index.eContainer()).getPrivileges(); List<OraclePrivilege> resultList = new ArrayList<OraclePrivilege>(); Object object = super.doGetValue(); if(object instanceof String){ String value = (String) object; String[] items = value.split(","); for(int i=0; i<items.length; i++){ for(OraclePrivilege pri : oldList){ if(!resultList.contains(pri) && pri.getName().equals(items[i])){ resultList.add(pri); break; } } } return resultList; } return object; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.DialogCellEditor#doSetValue(java.lang.Object) */ @Override protected void doSetValue(Object value) { if(value instanceof List){ List<OraclePrivilege> privilege = (List<OraclePrivilege>) value; StringBuffer buffer = new StringBuffer(); for (int i = 0, length = privilege.size(); i < length; i++) { buffer.append(privilege.get(i).getName()); if (i < length - 1) buffer.append(","); } super.doSetValue(buffer.toString()); } else{ super.doSetValue(value); } } /* (non-Javadoc) * @see org.eclipse.jface.viewers.DialogCellEditor#openDialogBox(org.eclipse.swt.widgets.Control) */ @Override protected Object openDialogBox(Control cellEditorWindow) { OracleUserPrivilegeSelectionDialog selectionDialog = new OracleUserPrivilegeSelectionDialog(cellEditorWindow.getShell(), "Oracle�û�Ȩ��ѡ��", columnViewer); selectionDialog.setBlockOnOpen(true); int returnCode = selectionDialog.open(); return (returnCode == Window.OK) ? selectionDialog.getResult() : null; } }