提交 0c1a24b7 编写于 作者: S serge-rider

#91 Objects move up/move down commands

上级 815d1902
...@@ -226,6 +226,8 @@ ...@@ -226,6 +226,8 @@
<command id="org.jkiss.dbeaver.core.object.open" name="%command.org.jkiss.dbeaver.core.object.open.name" description="%command.org.jkiss.dbeaver.core.object.open.description" categoryId="org.jkiss.dbeaver.core.database"/> <command id="org.jkiss.dbeaver.core.object.open" name="%command.org.jkiss.dbeaver.core.object.open.name" description="%command.org.jkiss.dbeaver.core.object.open.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.create" name="%command.org.jkiss.dbeaver.core.object.create.name" description="%command.org.jkiss.dbeaver.core.object.create.description" categoryId="org.jkiss.dbeaver.core.database"/> <command id="org.jkiss.dbeaver.core.object.create" name="%command.org.jkiss.dbeaver.core.object.create.name" description="%command.org.jkiss.dbeaver.core.object.create.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.delete" name="%command.org.jkiss.dbeaver.core.object.delete.name" description="%command.org.jkiss.dbeaver.core.object.delete.description" categoryId="org.jkiss.dbeaver.core.database"/> <command id="org.jkiss.dbeaver.core.object.delete" name="%command.org.jkiss.dbeaver.core.object.delete.name" description="%command.org.jkiss.dbeaver.core.object.delete.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.move.up" name="%command.org.jkiss.dbeaver.core.object.move.up.name" description="%command.org.jkiss.dbeaver.core.object.move.up.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.move.down" name="%command.org.jkiss.dbeaver.core.object.move.down.name" description="%command.org.jkiss.dbeaver.core.object.move.down.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.goto" name="%command.org.jkiss.dbeaver.core.object.goto.name" description="%command.org.jkiss.dbeaver.core.object.goto.description" categoryId="org.jkiss.dbeaver.core.database"/> <command id="org.jkiss.dbeaver.core.object.goto" name="%command.org.jkiss.dbeaver.core.object.goto.name" description="%command.org.jkiss.dbeaver.core.object.goto.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.core.object.filter.config" name="%command.org.jkiss.dbeaver.core.object.filter.config.name" description="%command.org.jkiss.dbeaver.core.object.filter.config.description" categoryId="org.jkiss.dbeaver.core.database"/> <command id="org.jkiss.dbeaver.core.object.filter.config" name="%command.org.jkiss.dbeaver.core.object.filter.config.name" description="%command.org.jkiss.dbeaver.core.object.filter.config.description" categoryId="org.jkiss.dbeaver.core.database"/>
...@@ -332,6 +334,9 @@ ...@@ -332,6 +334,9 @@
<image commandId="org.jkiss.dbeaver.core.object.open" icon="icons/edit.png"/> <image commandId="org.jkiss.dbeaver.core.object.open" icon="icons/edit.png"/>
<image commandId="org.jkiss.dbeaver.core.object.create" icon="IMG_TOOL_NEW_WIZARD"/> <image commandId="org.jkiss.dbeaver.core.object.create" icon="IMG_TOOL_NEW_WIZARD"/>
<image commandId="org.jkiss.dbeaver.core.object.delete" icon="IMG_ETOOL_DELETE"/> <image commandId="org.jkiss.dbeaver.core.object.delete" icon="IMG_ETOOL_DELETE"/>
<image commandId="org.jkiss.dbeaver.core.object.move.up" icon="icons/misc/arrow_up.png"/>
<image commandId="org.jkiss.dbeaver.core.object.move.down" icon="icons/misc/arrow_down.png"/>
<image commandId="org.jkiss.dbeaver.core.object.filter.config" icon="icons/misc/filter.png"/> <image commandId="org.jkiss.dbeaver.core.object.filter.config" icon="icons/misc/filter.png"/>
<image commandId="org.jkiss.dbeaver.core.object.filter.add.exclude" icon="icons/misc/filter_add.png"/> <image commandId="org.jkiss.dbeaver.core.object.filter.add.exclude" icon="icons/misc/filter_add.png"/>
<image commandId="org.jkiss.dbeaver.core.object.filter.add.include" icon="icons/misc/filter_add.png"/> <image commandId="org.jkiss.dbeaver.core.object.filter.add.include" icon="icons/misc/filter_add.png"/>
...@@ -723,6 +728,8 @@ ...@@ -723,6 +728,8 @@
<handler commandId="org.jkiss.dbeaver.core.txn.log" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourceTransactionLogHandler"/> <handler commandId="org.jkiss.dbeaver.core.txn.log" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourceTransactionLogHandler"/>
<handler commandId="org.jkiss.dbeaver.core.txn.pending" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourcePendingTransactionsHandler"/> <handler commandId="org.jkiss.dbeaver.core.txn.pending" class="org.jkiss.dbeaver.ui.actions.datasource.DataSourcePendingTransactionsHandler"/>
<!-- Navigator handlers -->
<handler commandId="org.jkiss.dbeaver.core.object.open" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen"> <handler commandId="org.jkiss.dbeaver.core.object.open" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectOpen">
<enabledWhen> <enabledWhen>
<with variable="selection"> <with variable="selection">
...@@ -872,6 +879,34 @@ ...@@ -872,6 +879,34 @@
</with> </with>
</enabledWhen> </enabledWhen>
</handler> </handler>
<handler commandId="org.jkiss.dbeaver.core.object.move.up" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectMove">
<activeWhen><reference definitionId="org.jkiss.dbeaver.core.ui.navigator.part"/></activeWhen>
<enabledWhen>
<with variable="selection">
<count value="1"/>
<iterate operator="and">
<and>
<instanceof value="org.jkiss.dbeaver.model.navigator.DBNNode"/>
<test property="org.jkiss.dbeaver.core.object.canMoveUp"/>
</and>
</iterate>
</with>
</enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.core.object.move.down" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectMove">
<activeWhen><reference definitionId="org.jkiss.dbeaver.core.ui.navigator.part"/></activeWhen>
<enabledWhen>
<with variable="selection">
<count value="1"/>
<iterate operator="and">
<and>
<instanceof value="org.jkiss.dbeaver.model.navigator.DBNNode"/>
<test property="org.jkiss.dbeaver.core.object.canMoveDown"/>
</and>
</iterate>
</with>
</enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.core.object.goto" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectGoto"> <handler commandId="org.jkiss.dbeaver.core.object.goto" class="org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerObjectGoto">
<activeWhen> <activeWhen>
...@@ -882,6 +917,8 @@ ...@@ -882,6 +917,8 @@
</activeWhen> </activeWhen>
</handler> </handler>
<!-- SQL editor handlers -->
<handler commandId="org.jkiss.dbeaver.core.sql.editor.open" class="org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler"> <handler commandId="org.jkiss.dbeaver.core.sql.editor.open" class="org.jkiss.dbeaver.ui.editors.sql.handlers.OpenHandler">
<activeWhen> <activeWhen>
<or> <or>
......
...@@ -27,6 +27,8 @@ public interface CoreCommands ...@@ -27,6 +27,8 @@ public interface CoreCommands
String CMD_OBJECT_OPEN = "org.jkiss.dbeaver.core.object.open"; //$NON-NLS-1$ String CMD_OBJECT_OPEN = "org.jkiss.dbeaver.core.object.open"; //$NON-NLS-1$
String CMD_OBJECT_CREATE = "org.jkiss.dbeaver.core.object.create"; //$NON-NLS-1$ String CMD_OBJECT_CREATE = "org.jkiss.dbeaver.core.object.create"; //$NON-NLS-1$
String CMD_OBJECT_DELETE = "org.jkiss.dbeaver.core.object.delete"; //$NON-NLS-1$ String CMD_OBJECT_DELETE = "org.jkiss.dbeaver.core.object.delete"; //$NON-NLS-1$
String CMD_OBJECT_MOVE_UP = "org.jkiss.dbeaver.core.object.move.up"; //$NON-NLS-1$
String CMD_OBJECT_MOVE_DOWN = "org.jkiss.dbeaver.core.object.move.down"; //$NON-NLS-1$
String GROUP_TOOLS = "tools"; String GROUP_TOOLS = "tools";
......
...@@ -23,6 +23,7 @@ import org.jkiss.dbeaver.model.DBPOrderedObject; ...@@ -23,6 +23,7 @@ import org.jkiss.dbeaver.model.DBPOrderedObject;
import org.jkiss.dbeaver.model.edit.DBEObjectMaker; import org.jkiss.dbeaver.model.edit.DBEObjectMaker;
import org.jkiss.dbeaver.model.edit.DBEObjectManager; import org.jkiss.dbeaver.model.edit.DBEObjectManager;
import org.jkiss.dbeaver.model.edit.DBEObjectRenamer; import org.jkiss.dbeaver.model.edit.DBEObjectRenamer;
import org.jkiss.dbeaver.model.edit.DBEObjectReorderer;
import org.jkiss.dbeaver.model.navigator.*; import org.jkiss.dbeaver.model.navigator.*;
import org.jkiss.dbeaver.model.app.DBPResourceHandler; import org.jkiss.dbeaver.model.app.DBPResourceHandler;
import org.jkiss.dbeaver.model.struct.DBSObject; import org.jkiss.dbeaver.model.struct.DBSObject;
...@@ -54,6 +55,7 @@ public class ObjectPropertyTester extends PropertyTester ...@@ -54,6 +55,7 @@ public class ObjectPropertyTester extends PropertyTester
super(); super();
} }
@SuppressWarnings("unchecked")
@Override @Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
...@@ -65,6 +67,7 @@ public class ObjectPropertyTester extends PropertyTester ...@@ -65,6 +67,7 @@ public class ObjectPropertyTester extends PropertyTester
return false; return false;
} }
DBNNode node = (DBNNode)receiver; DBNNode node = (DBNNode)receiver;
//System.out.println("TEST " + property + " ON " + node.getName());
switch (property) { switch (property) {
case PROP_CAN_OPEN: case PROP_CAN_OPEN:
...@@ -166,11 +169,14 @@ public class ObjectPropertyTester extends PropertyTester ...@@ -166,11 +169,14 @@ public class ObjectPropertyTester extends PropertyTester
if (node instanceof DBNDatabaseNode) { if (node instanceof DBNDatabaseNode) {
DBSObject object = ((DBNDatabaseNode) node).getObject(); DBSObject object = ((DBNDatabaseNode) node).getObject();
if (object instanceof DBPOrderedObject) { if (object instanceof DBPOrderedObject) {
final int position = ((DBPOrderedObject) object).getOrdinalPosition(); DBEObjectReorderer objectReorderer = getObjectManager(object.getClass(), DBEObjectReorderer.class);
if (property.equals(PROP_CAN_MOVE_UP)) { if (objectReorderer != null) {
return position > 0; final int position = ((DBPOrderedObject) object).getOrdinalPosition();
if (property.equals(PROP_CAN_MOVE_UP)) {
return position > objectReorderer.getMinimumOrdinalPosition(object);
}
return position < objectReorderer.getMaximumOrdinalPosition(object);
} }
return position < ((DBPOrderedObject) object).getMaximumOrdinalPosition();
} }
} }
break; break;
......
...@@ -28,6 +28,9 @@ import org.eclipse.ui.IWorkbenchCommandConstants; ...@@ -28,6 +28,9 @@ import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.IWorkbenchSite; import org.eclipse.ui.IWorkbenchSite;
import org.eclipse.ui.part.MultiPageEditorPart; import org.eclipse.ui.part.MultiPageEditorPart;
import org.eclipse.ui.part.MultiPageEditorSite; import org.eclipse.ui.part.MultiPageEditorSite;
import org.jkiss.dbeaver.core.CoreCommands;
import org.jkiss.dbeaver.model.edit.DBEObjectManager;
import org.jkiss.dbeaver.model.edit.DBEObjectReorderer;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder; import org.jkiss.dbeaver.model.navigator.DBNDatabaseFolder;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode; import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNNode; import org.jkiss.dbeaver.model.navigator.DBNNode;
...@@ -36,6 +39,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; ...@@ -36,6 +39,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService; import org.jkiss.dbeaver.model.runtime.load.DatabaseLoadService;
import org.jkiss.dbeaver.model.sql.SQLUtils; import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.struct.DBSWrapper; import org.jkiss.dbeaver.model.struct.DBSWrapper;
import org.jkiss.dbeaver.registry.editor.EntityEditorsRegistry;
import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor; import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor;
import org.jkiss.dbeaver.ui.*; import org.jkiss.dbeaver.ui.*;
import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerFilterConfig; import org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerFilterConfig;
...@@ -81,7 +85,8 @@ public class ItemListControl extends NodeListControl ...@@ -81,7 +85,8 @@ public class ItemListControl extends NodeListControl
protected void fillCustomActions(IContributionManager contributionManager) protected void fillCustomActions(IContributionManager contributionManager)
{ {
super.fillCustomActions(contributionManager); super.fillCustomActions(contributionManager);
if (getRootNode() instanceof DBNDatabaseFolder && ((DBNDatabaseFolder)getRootNode()).getItemsMeta() != null) { final DBNNode rootNode = getRootNode();
if (rootNode instanceof DBNDatabaseFolder && ((DBNDatabaseFolder) rootNode).getItemsMeta() != null) {
contributionManager.add(new Action( contributionManager.add(new Action(
"Filter", "Filter",
DBeaverIcons.getImageDescriptor(UIIcon.FILTER)) DBeaverIcons.getImageDescriptor(UIIcon.FILTER))
...@@ -89,7 +94,7 @@ public class ItemListControl extends NodeListControl ...@@ -89,7 +94,7 @@ public class ItemListControl extends NodeListControl
@Override @Override
public void run() public void run()
{ {
NavigatorHandlerFilterConfig.configureFilters(getShell(), getRootNode()); NavigatorHandlerFilterConfig.configureFilters(getShell(), rootNode);
} }
}); });
} }
...@@ -97,7 +102,26 @@ public class ItemListControl extends NodeListControl ...@@ -97,7 +102,26 @@ public class ItemListControl extends NodeListControl
if (workbenchSite != null) { if (workbenchSite != null) {
contributionManager.add(ActionUtils.makeCommandContribution(workbenchSite, IWorkbenchCommandConstants.FILE_REFRESH)); contributionManager.add(ActionUtils.makeCommandContribution(workbenchSite, IWorkbenchCommandConstants.FILE_REFRESH));
} }
//contributionManager.add(new PackColumnsAction());
if (rootNode instanceof DBNDatabaseNode) {
boolean hasReorder = false;
List<Class<?>> childrenTypes = ((DBNDatabaseNode) rootNode).getChildrenTypes(null);
for (Class<?> chilType : childrenTypes) {
if (EntityEditorsRegistry.getInstance().getObjectManager(chilType, DBEObjectReorderer.class) != null) {
hasReorder = true;
break;
}
}
if (hasReorder) {
contributionManager.add(new Separator());
contributionManager.add(ActionUtils.makeCommandContribution(
workbenchSite,
CoreCommands.CMD_OBJECT_MOVE_UP));
contributionManager.add(ActionUtils.makeCommandContribution(
workbenchSite,
CoreCommands.CMD_OBJECT_MOVE_DOWN));
}
}
if (workbenchSite instanceof MultiPageEditorSite) { if (workbenchSite instanceof MultiPageEditorSite) {
final MultiPageEditorPart editor = ((MultiPageEditorSite) workbenchSite).getMultiPageEditor(); final MultiPageEditorPart editor = ((MultiPageEditorSite) workbenchSite).getMultiPageEditor();
...@@ -118,7 +142,6 @@ public class ItemListControl extends NodeListControl ...@@ -118,7 +142,6 @@ public class ItemListControl extends NodeListControl
null, null,
true)); true));
} }
//if (((IEditorSite) site).getPart() instanceof
} }
} }
......
...@@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.DBPEvaluationContext; ...@@ -27,6 +27,7 @@ import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.edit.DBECommandContext; import org.jkiss.dbeaver.model.edit.DBECommandContext;
import org.jkiss.dbeaver.model.edit.DBEObjectRenamer; import org.jkiss.dbeaver.model.edit.DBEObjectRenamer;
import org.jkiss.dbeaver.model.edit.DBEObjectReorderer;
import org.jkiss.dbeaver.model.edit.DBEPersistAction; import org.jkiss.dbeaver.model.edit.DBEPersistAction;
import org.jkiss.dbeaver.model.impl.DBSObjectCache; import org.jkiss.dbeaver.model.impl.DBSObjectCache;
import org.jkiss.dbeaver.model.impl.edit.DBECommandAbstract; import org.jkiss.dbeaver.model.impl.edit.DBECommandAbstract;
...@@ -46,7 +47,9 @@ import java.util.Locale; ...@@ -46,7 +47,9 @@ import java.util.Locale;
/** /**
* MySQL table column manager * MySQL table column manager
*/ */
public class MySQLTableColumnManager extends SQLTableColumnManager<MySQLTableColumn, MySQLTableBase> implements DBEObjectRenamer<MySQLTableColumn> { public class MySQLTableColumnManager extends SQLTableColumnManager<MySQLTableColumn, MySQLTableBase>
implements DBEObjectRenamer<MySQLTableColumn>, DBEObjectReorderer<MySQLTableColumn>
{
protected final ColumnModifier<MySQLTableColumn> MySQLDataTypeModifier = new ColumnModifier<MySQLTableColumn>() { protected final ColumnModifier<MySQLTableColumn> MySQLDataTypeModifier = new ColumnModifier<MySQLTableColumn>() {
@Override @Override
...@@ -144,4 +147,21 @@ public class MySQLTableColumnManager extends SQLTableColumnManager<MySQLTableCol ...@@ -144,4 +147,21 @@ public class MySQLTableColumnManager extends SQLTableColumnManager<MySQLTableCol
getNestedDeclaration(column.getTable(), command))); getNestedDeclaration(column.getTable(), command)));
} }
///////////////////////////////////////////////
// Reorder
@Override
public int getMinimumOrdinalPosition(MySQLTableColumn object) {
return 1;
}
@Override
public int getMaximumOrdinalPosition(MySQLTableColumn object) {
return object.getTable().getCachedAttributes().size();
}
@Override
public void setObjectOrdinalPosition(DBECommandContext commandContext, MySQLTableColumn object, int newPosition) throws DBException {
}
} }
...@@ -40,6 +40,8 @@ import java.sql.PreparedStatement; ...@@ -40,6 +40,8 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List;
/** /**
* MySQLTable base * MySQLTable base
...@@ -105,6 +107,15 @@ public abstract class MySQLTableBase extends JDBCTable<MySQLDataSource, MySQLCat ...@@ -105,6 +107,15 @@ public abstract class MySQLTableBase extends JDBCTable<MySQLDataSource, MySQLCat
return getContainer().tableCache.getChild(monitor, getContainer(), this, attributeName); return getContainer().tableCache.getChild(monitor, getContainer(), this, attributeName);
} }
public List<MySQLTableColumn> getCachedAttributes()
{
DBSObjectCache<MySQLTableBase, MySQLTableColumn> childrenCache = getContainer().tableCache.getChildrenCache(this);
if (childrenCache != null) {
return childrenCache.getCachedObjects();
}
return Collections.emptyList();
}
@Override @Override
public DBSObject refreshObject(@NotNull DBRProgressMonitor monitor) throws DBException public DBSObject refreshObject(@NotNull DBRProgressMonitor monitor) throws DBException
{ {
......
...@@ -23,6 +23,7 @@ import org.jkiss.dbeaver.DBException; ...@@ -23,6 +23,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.ext.mysql.MySQLConstants; import org.jkiss.dbeaver.ext.mysql.MySQLConstants;
import org.jkiss.dbeaver.ext.mysql.MySQLUtils; import org.jkiss.dbeaver.ext.mysql.MySQLUtils;
import org.jkiss.dbeaver.model.DBPNamedObject2; import org.jkiss.dbeaver.model.DBPNamedObject2;
import org.jkiss.dbeaver.model.DBPOrderedObject;
import org.jkiss.dbeaver.model.DBUtils; import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils; import org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils;
import org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCColumnKeyType; import org.jkiss.dbeaver.model.impl.jdbc.struct.JDBCColumnKeyType;
...@@ -44,7 +45,7 @@ import java.util.regex.Pattern; ...@@ -44,7 +45,7 @@ import java.util.regex.Pattern;
/** /**
* MySQLTableColumn * MySQLTableColumn
*/ */
public class MySQLTableColumn extends JDBCTableColumn<MySQLTableBase> implements DBSTableColumn, DBPNamedObject2 public class MySQLTableColumn extends JDBCTableColumn<MySQLTableBase> implements DBSTableColumn, DBPNamedObject2, DBPOrderedObject
{ {
private static final Log log = Log.getLog(MySQLTableColumn.class); private static final Log log = Log.getLog(MySQLTableColumn.class);
......
...@@ -27,8 +27,6 @@ public interface DBPOrderedObject ...@@ -27,8 +27,6 @@ public interface DBPOrderedObject
{ {
int getOrdinalPosition(); int getOrdinalPosition();
int getMaximumOrdinalPosition();
void setOrdinalPosition(int position); void setOrdinalPosition(int position);
} }
...@@ -27,8 +27,12 @@ import org.jkiss.dbeaver.model.struct.DBSObject; ...@@ -27,8 +27,12 @@ import org.jkiss.dbeaver.model.struct.DBSObject;
*/ */
public interface DBEObjectReorderer<OBJECT_TYPE extends DBSObject & DBPOrderedObject> extends DBEObjectManager<OBJECT_TYPE> { public interface DBEObjectReorderer<OBJECT_TYPE extends DBSObject & DBPOrderedObject> extends DBEObjectManager<OBJECT_TYPE> {
int getMinimumOrdinalPosition(OBJECT_TYPE object);
int getMaximumOrdinalPosition(OBJECT_TYPE object);
/** /**
* Describes object * Changes object ordinal position
* *
* @param commandContext command context. Implementation should add new command to it. * @param commandContext command context. Implementation should add new command to it.
* @param object object * @param object object
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册