提交 6022390c 编写于 作者: J jurgen

PlaintText UI

上级 eead4f65
...@@ -92,7 +92,6 @@ import java.util.List; ...@@ -92,7 +92,6 @@ import java.util.List;
* ResultSetViewer * ResultSetViewer
* *
* TODO: fix presentation contributions to toolbar * TODO: fix presentation contributions to toolbar
* TODO: fix plaint text shortcuts. Use special focus control handler
* *
* TODO: fix copy multiple cells - tabulation broken * TODO: fix copy multiple cells - tabulation broken
* TODO: links in both directions, multiple links support (context menu) * TODO: links in both directions, multiple links support (context menu)
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
package org.jkiss.dbeaver.ui.controls.resultset.spreadsheet; package org.jkiss.dbeaver.ui.controls.resultset;
/** /**
* ThemeConstants * ThemeConstants
*/ */
class ThemeConstants public class ThemeConstants
{ {
public static final String RESULTS_PROP_PREFIX = "org.jkiss.dbeaver.sql.resultset."; public static final String RESULTS_PROP_PREFIX = "org.jkiss.dbeaver.sql.resultset.";
......
...@@ -29,15 +29,14 @@ import org.eclipse.jface.text.IFindReplaceTarget; ...@@ -29,15 +29,14 @@ import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CaretEvent; import org.eclipse.swt.custom.CaretEvent;
import org.eclipse.swt.custom.CaretListener; import org.eclipse.swt.custom.CaretListener;
import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.themes.IThemeManager;
import org.jkiss.code.NotNull; import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable; import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.data.DBDAttributeBinding; import org.jkiss.dbeaver.model.data.DBDAttributeBinding;
...@@ -48,6 +47,7 @@ import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController; ...@@ -48,6 +47,7 @@ import org.jkiss.dbeaver.ui.controls.resultset.IResultSetController;
import org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation; import org.jkiss.dbeaver.ui.controls.resultset.IResultSetPresentation;
import org.jkiss.dbeaver.ui.controls.resultset.ResultSetModel; import org.jkiss.dbeaver.ui.controls.resultset.ResultSetModel;
import org.jkiss.dbeaver.ui.controls.resultset.ResultSetRow; import org.jkiss.dbeaver.ui.controls.resultset.ResultSetRow;
import org.jkiss.dbeaver.ui.controls.resultset.ThemeConstants;
import java.util.List; import java.util.List;
...@@ -64,6 +64,8 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable ...@@ -64,6 +64,8 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable
private DBDAttributeBinding curAttribute; private DBDAttributeBinding curAttribute;
private StyledTextFindReplaceTarget findReplaceTarget; private StyledTextFindReplaceTarget findReplaceTarget;
public boolean activated; public boolean activated;
private StyleRange curLineRange;
private Color curLineColor;
@Override @Override
public void createPresentation(@NotNull final IResultSetController controller, @NotNull Composite parent) { public void createPresentation(@NotNull final IResultSetController controller, @NotNull Composite parent) {
...@@ -84,6 +86,7 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable ...@@ -84,6 +86,7 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable
}); });
findReplaceTarget = new StyledTextFindReplaceTarget(text); findReplaceTarget = new StyledTextFindReplaceTarget(text);
UIUtils.enableHostEditorKeyBindingsSupport(controller.getSite(), text); UIUtils.enableHostEditorKeyBindingsSupport(controller.getSite(), text);
applyThemeSettings();
// Register context menu // Register context menu
MenuManager menuMgr = new MenuManager(); MenuManager menuMgr = new MenuManager();
...@@ -103,18 +106,27 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable ...@@ -103,18 +106,27 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable
controller.getSite().registerContextMenu(menuMgr, null); controller.getSite().registerContextMenu(menuMgr, null);
} }
private void applyThemeSettings() {
IThemeManager themeManager = controller.getSite().getWorkbenchWindow().getWorkbench().getThemeManager();
curLineColor = themeManager.getCurrentTheme().getColorRegistry().get(ThemeConstants.COLOR_SQL_RESULT_CELL_ODD_BACK);
}
private void onCursorChange(int offset) { private void onCursorChange(int offset) {
ResultSetModel model = controller.getModel(); ResultSetModel model = controller.getModel();
int lineNum = text.getLineAtOffset(offset); int lineNum = text.getLineAtOffset(offset);
int lineOffset = offset - text.getOffsetAtLine(lineNum); int lineOffset = text.getOffsetAtLine(lineNum);
int horizontalOffset = offset - lineOffset;
int lineCount = text.getLineCount();
int rowNum = lineNum - FIRST_ROW_LINE; //First 2 lines is header int rowNum = lineNum - FIRST_ROW_LINE; //First 2 lines is header
int colNum = 0; int colNum = 0;
int tmpWidth = 0; int horOffsetBegin = 0, horOffsetEnd = 0;
for (int i = 0; i < colWidths.length; i++) { for (int i = 0; i < colWidths.length; i++) {
tmpWidth += colWidths[i]; horOffsetBegin = horOffsetEnd;
if (lineOffset < tmpWidth) { horOffsetEnd += colWidths[i] + 1;
if (horizontalOffset < horOffsetEnd) {
colNum = i; colNum = i;
break; break;
} }
...@@ -127,6 +139,18 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable ...@@ -127,6 +139,18 @@ public class PlainTextPresentation implements IResultSetPresentation, IAdaptable
curAttribute = model.getVisibleAttribute(colNum); curAttribute = model.getVisibleAttribute(colNum);
} }
controller.updateEditControls(); controller.updateEditControls();
{
// Highlight row
if (curLineRange == null || curLineRange.start != lineOffset + horOffsetBegin) {
curLineRange = new StyleRange(
lineOffset + horOffsetBegin,
horOffsetEnd - horOffsetBegin - 1,
null,
curLineColor);
text.setStyleRanges(new StyleRange[]{curLineRange});
}
}
} }
@Override @Override
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册