提交 181b39f4 编写于 作者: J jurgen

Presentation selection model refactored.

Documents select/delete
上级 e2812368
......@@ -22,6 +22,7 @@ import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.*;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.widgets.Composite;
......@@ -31,14 +32,18 @@ import org.eclipse.ui.IWorkbenchPartSite;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.ui.UIUtils;
import java.util.ArrayList;
import java.util.List;
/**
* Abstract presentation.
*/
public abstract class AbstractPresentation implements IResultSetPresentation {
public abstract class AbstractPresentation implements IResultSetPresentation, ISelectionProvider {
private static final String PRESENTATION_CONTROL_ID = "org.jkiss.dbeaver.ui.resultset.presentation";
protected IResultSetController controller;
private final List<ISelectionChangedListener> selectionChangedListenerList = new ArrayList<ISelectionChangedListener>();
public IResultSetController getController() {
return controller;
......@@ -129,4 +134,34 @@ public abstract class AbstractPresentation implements IResultSetPresentation {
}
});
}
///////////////////////////////////////////////////////////////////////
// ISelectionProvider
protected void fireSelectionChanged(ISelection selection) {
SelectionChangedEvent event = new SelectionChangedEvent(this, selection);
for (ISelectionChangedListener listener : selectionChangedListenerList) {
listener.selectionChanged(event);
}
}
@Override
public void addSelectionChangedListener(ISelectionChangedListener listener) {
selectionChangedListenerList.add(listener);
}
@Override
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
selectionChangedListenerList.remove(listener);
}
@Override
public ISelection getSelection() {
return new StructuredSelection();
}
@Override
public void setSelection(ISelection selection) {
}
}
......@@ -28,6 +28,7 @@ import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
......@@ -48,23 +49,23 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.DBeaverPreferences;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverCore;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.model.data.*;
import org.jkiss.dbeaver.model.exec.*;
import org.jkiss.dbeaver.model.impl.local.StatResultSet;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableWithProgress;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.sql.SQLUtils;
import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.model.virtual.DBVConstants;
import org.jkiss.dbeaver.model.virtual.DBVEntityConstraint;
import org.jkiss.dbeaver.runtime.RunnableWithResult;
import org.jkiss.dbeaver.runtime.RuntimeUtils;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.tools.transfer.IDataTransferProducer;
import org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer;
import org.jkiss.dbeaver.tools.transfer.wizard.DataTransferWizard;
......@@ -1404,7 +1405,10 @@ public class ResultSetViewer extends Viewer
public IResultSetSelection getSelection()
{
if (activePresentation instanceof ISelectionProvider) {
return (IResultSetSelection) ((ISelectionProvider) activePresentation).getSelection();
ISelection selection = ((ISelectionProvider) activePresentation).getSelection();
if (selection instanceof IResultSetSelection) {
return (IResultSetSelection) selection;
}
}
return new EmptySelection();
}
......@@ -1978,7 +1982,7 @@ public class ResultSetViewer extends Viewer
}
}
private class EmptySelection implements IResultSetSelection {
private class EmptySelection extends StructuredSelection implements IResultSetSelection {
@Override
public IResultSetController getController() {
return ResultSetViewer.this;
......@@ -1988,36 +1992,6 @@ public class ResultSetViewer extends Viewer
public Collection<ResultSetRow> getSelectedRows() {
return Collections.emptyList();
}
@Override
public Object getFirstElement() {
return null;
}
@Override
public Iterator iterator() {
return Collections.emptyList().iterator();
}
@Override
public int size() {
return 0;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public List toList() {
return Collections.emptyList();
}
@Override
public boolean isEmpty() {
return false;
}
}
private class ConfigAction extends Action implements IMenuCreator {
......
......@@ -126,7 +126,6 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
private final Map<SpreadsheetValueController, IValueEditorStandalone> openEditors = new HashMap<SpreadsheetValueController, IValueEditorStandalone>();
private SpreadsheetFindReplaceTarget findReplaceTarget;
private final List<ISelectionChangedListener> selectionChangedListenerList = new ArrayList<ISelectionChangedListener>();
// UI modifiers
private IThemeManager themeManager;
......@@ -1023,23 +1022,6 @@ public class SpreadsheetPresentation extends AbstractPresentation implements IRe
fireSelectionChanged(selection);
}
private void fireSelectionChanged(ISelection selection) {
SelectionChangedEvent event = new SelectionChangedEvent(this, selection);
for (ISelectionChangedListener listener : selectionChangedListenerList) {
listener.selectionChanged(event);
}
}
@Override
public void addSelectionChangedListener(ISelectionChangedListener listener) {
selectionChangedListenerList.add(listener);
}
@Override
public void removeSelectionChangedListener(ISelectionChangedListener listener) {
selectionChangedListenerList.remove(listener);
}
private class SpreadsheetSelectionImpl implements IResultSetSelection {
@Nullable
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册