Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
d97b1b06
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d97b1b06
编写于
6月 08, 2018
作者:
S
serge@jkiss.org
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#3596 Undo/redo command handle fix
Former-commit-id:
1c1b21d7
上级
d811ead8
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
61 addition
and
34 deletion
+61
-34
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java
...aver/ui/data/managers/stream/AbstractTextPanelEditor.java
+9
-5
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java
...kiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java
+2
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java
...jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java
+1
-1
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
...src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
+30
-20
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditorPropertyTester.java
...dbeaver/ui/editors/entity/EntityEditorPropertyTester.java
+19
-6
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java
浏览文件 @
d97b1b06
...
...
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IAdaptable;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.IContributionManager
;
import
org.eclipse.jface.action.Separator
;
import
org.eclipse.jface.text.IUndoManager
;
import
org.eclipse.jface.text.source.ISourceViewer
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.custom.StyledText
;
...
...
@@ -56,7 +57,7 @@ public abstract class AbstractTextPanelEditor<EDITOR extends BaseTextEditor> imp
private
IValueController
valueController
;
private
IEditorSite
subSite
;
private
BaseTextEditor
editor
;
private
EDITOR
editor
;
@Override
public
StyledText
createControl
(
IValueController
valueController
)
{
...
...
@@ -77,7 +78,7 @@ public abstract class AbstractTextPanelEditor<EDITOR extends BaseTextEditor> imp
return
editor
.
getEditorControl
();
}
protected
abstract
BaseTextEditor
createEditorParty
(
IValueController
valueController
);
protected
abstract
EDITOR
createEditorParty
(
IValueController
valueController
);
@Override
public
void
contributeActions
(
@NotNull
IContributionManager
manager
,
@NotNull
final
StyledText
control
)
throws
DBCException
{
...
...
@@ -117,18 +118,18 @@ public abstract class AbstractTextPanelEditor<EDITOR extends BaseTextEditor> imp
}
}
protected
BaseTextEditor
getTextEditor
()
{
protected
EDITOR
getTextEditor
()
{
return
editor
;
}
pr
otected
void
initEditorSettings
(
StyledText
control
)
{
pr
ivate
void
initEditorSettings
(
StyledText
control
)
{
boolean
wwEnabled
=
ValueViewerPanel
.
getPanelSettings
().
getBoolean
(
PREF_TEXT_EDITOR_WORD_WRAP
);
if
(
wwEnabled
!=
control
.
getWordWrap
())
{
control
.
setWordWrap
(
wwEnabled
);
}
}
pr
otected
void
applyEditorStyle
()
{
pr
ivate
void
applyEditorStyle
()
{
BaseTextEditor
textEditor
=
getTextEditor
();
if
(
textEditor
!=
null
&&
ValueViewerPanel
.
getPanelSettings
().
getBoolean
(
PREF_TEXT_EDITOR_AUTO_FORMAT
))
{
try
{
...
...
@@ -146,6 +147,9 @@ public abstract class AbstractTextPanelEditor<EDITOR extends BaseTextEditor> imp
if
(
adapter
.
isAssignableFrom
(
textEditor
.
getClass
()))
{
return
adapter
.
cast
(
textEditor
);
}
if
(
adapter
==
IUndoManager
.
class
)
{
return
adapter
.
cast
(
textEditor
.
getTextViewer
().
getUndoManager
());
}
return
textEditor
.
getAdapter
(
adapter
);
}
return
null
;
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java
浏览文件 @
d97b1b06
...
...
@@ -22,10 +22,10 @@ import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor;
/**
* TextPanelEditor
*/
public
class
TextPanelEditor
extends
AbstractTextPanelEditor
<
BaseTextEditor
>
{
public
class
TextPanelEditor
extends
AbstractTextPanelEditor
<
TextEditorPart
>
{
@Override
protected
BaseTextEditor
createEditorParty
(
IValueController
valueController
)
{
protected
TextEditorPart
createEditorParty
(
IValueController
valueController
)
{
return
new
TextEditorPart
();
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java
浏览文件 @
d97b1b06
...
...
@@ -26,7 +26,7 @@ import org.jkiss.dbeaver.ui.editors.xml.XMLEditor;
public
class
XMLPanelEditor
extends
AbstractTextPanelEditor
<
XMLEditor
>
{
@Override
protected
BaseText
Editor
createEditorParty
(
IValueController
valueController
)
{
protected
XML
Editor
createEditorParty
(
IValueController
valueController
)
{
return
new
XMLEditor
();
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditor.java
浏览文件 @
d97b1b06
...
...
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.jface.text.IUndoManager
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
...
...
@@ -371,33 +372,42 @@ public class EntityEditor extends MultiPageDatabaseEditor
public
void
undoChanges
()
{
DBECommandContext
commandContext
=
getCommandContext
();
if
(
commandContext
!=
null
&&
commandContext
.
getUndoCommand
()
!=
null
)
{
if
(!
getDatabaseObject
().
isPersisted
()
&&
commandContext
.
getUndoCommands
().
size
()
==
1
)
{
//getSite().getPage().closeEditor(this, true);
//return;
// Undo of last command in command context will close editor
// Let's ask user about it
if
(
ConfirmationDialog
.
showConfirmDialog
(
null
,
DBeaverPreferences
.
CONFIRM_ENTITY_REJECT
,
ConfirmationDialog
.
QUESTION
,
getDatabaseObject
().
getName
())
!=
IDialogConstants
.
YES_ID
)
{
return
;
IUndoManager
undoManager
=
getAdapter
(
IUndoManager
.
class
);
if
(
undoManager
!=
null
)
{
undoManager
.
undo
();
}
else
{
DBECommandContext
commandContext
=
getCommandContext
();
if
(
commandContext
!=
null
&&
commandContext
.
getUndoCommand
()
!=
null
)
{
if
(!
getDatabaseObject
().
isPersisted
()
&&
commandContext
.
getUndoCommands
().
size
()
==
1
)
{
//getSite().getPage().closeEditor(this, true);
//return;
// Undo of last command in command context will close editor
// Let's ask user about it
if
(
ConfirmationDialog
.
showConfirmDialog
(
null
,
DBeaverPreferences
.
CONFIRM_ENTITY_REJECT
,
ConfirmationDialog
.
QUESTION
,
getDatabaseObject
().
getName
())
!=
IDialogConstants
.
YES_ID
)
{
return
;
}
}
commandContext
.
undoCommand
();
firePropertyChange
(
IEditorPart
.
PROP_DIRTY
);
}
commandContext
.
undoCommand
();
firePropertyChange
(
IEditorPart
.
PROP_DIRTY
);
}
}
public
void
redoChanges
()
{
DBECommandContext
commandContext
=
getCommandContext
();
if
(
commandContext
!=
null
&&
commandContext
.
getRedoCommand
()
!=
null
)
{
commandContext
.
redoCommand
();
firePropertyChange
(
IEditorPart
.
PROP_DIRTY
);
IUndoManager
undoManager
=
getAdapter
(
IUndoManager
.
class
);
if
(
undoManager
!=
null
)
{
undoManager
.
redo
();
}
else
{
DBECommandContext
commandContext
=
getCommandContext
();
if
(
commandContext
!=
null
&&
commandContext
.
getRedoCommand
()
!=
null
)
{
commandContext
.
redoCommand
();
firePropertyChange
(
IEditorPart
.
PROP_DIRTY
);
}
}
}
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/entity/EntityEditorPropertyTester.java
浏览文件 @
d97b1b06
...
...
@@ -17,6 +17,7 @@
package
org.jkiss.dbeaver.ui.editors.entity
;
import
org.eclipse.core.expressions.PropertyTester
;
import
org.eclipse.jface.text.IUndoManager
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.edit.DBECommandContext
;
import
org.jkiss.dbeaver.ui.ActionUtils
;
...
...
@@ -43,15 +44,27 @@ public class EntityEditorPropertyTester extends PropertyTester
return
false
;
}
EntityEditor
editor
=
(
EntityEditor
)
receiver
;
DBECommandContext
commandContext
=
editor
.
getEditorInput
().
getCommandContext
();
if
(
commandContext
!=
null
)
{
if
(
PROP_DIRTY
.
equals
(
property
))
{
return
editor
.
isDirty
();
}
IUndoManager
undoManager
=
editor
.
getAdapter
(
IUndoManager
.
class
);
if
(
undoManager
!=
null
)
{
switch
(
property
)
{
case
PROP_CAN_UNDO:
return
commandContext
.
getUndoCommand
()
!=
null
;
return
undoManager
.
undoable
()
;
case
PROP_CAN_REDO:
return
commandContext
.
getRedoCommand
()
!=
null
;
case
PROP_DIRTY:
return
editor
.
isDirty
();
return
undoManager
.
redoable
();
}
}
else
{
DBECommandContext
commandContext
=
editor
.
getEditorInput
().
getCommandContext
();
if
(
commandContext
!=
null
)
{
switch
(
property
)
{
case
PROP_CAN_UNDO:
return
commandContext
.
getUndoCommand
()
!=
null
;
case
PROP_CAN_REDO:
return
commandContext
.
getRedoCommand
()
!=
null
;
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录