Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
a464e72c
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,发现更多精彩内容 >>
提交
a464e72c
编写于
11月 04, 2017
作者:
С
Сергей Ковальчук
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Bug 2138
Resize hex editor.
上级
b6f3aa03
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
115 addition
and
44 deletion
+115
-44
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java
...beaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java
+2
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java
...org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java
+1
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/BinaryPanelEditor.java
...ss/dbeaver/ui/data/managers/stream/BinaryPanelEditor.java
+22
-3
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java
...src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java
+9
-2
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java
...c/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java
+12
-30
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexManager.java
...e/src/org/jkiss/dbeaver/ui/editors/binary/HexManager.java
+14
-0
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java
...dbeaver/ui/editors/binary/pref/HexPreferencesManager.java
+45
-7
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java
...ss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java
+10
-2
未找到文件。
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/DBeaverPreferences.java
浏览文件 @
a464e72c
...
...
@@ -139,5 +139,7 @@ public final class DBeaverPreferences
public
static
final
String
LOGS_DEBUG_ENABLED
=
"logs.debug.enabled"
;
public
static
final
String
LOGS_DEBUG_LOCATION
=
"logs.debug.location"
;
public
static
final
String
HEX_DEF_WIDTH
=
"default.hex.width"
;
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/core/DBeaverPreferencesInitializer.java
浏览文件 @
a464e72c
...
...
@@ -148,6 +148,7 @@ public class DBeaverPreferencesInitializer extends AbstractPreferenceInitializer
PrefUtils
.
setDefaultPreferenceValue
(
store
,
DBeaverPreferences
.
HEX_FONT_NAME
,
HexEditControl
.
DEFAULT_FONT_NAME
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
DBeaverPreferences
.
HEX_FONT_SIZE
,
10
);
PrefUtils
.
setDefaultPreferenceValue
(
store
,
DBeaverPreferences
.
HEX_DEF_WIDTH
,
8
);
// General UI
PrefUtils
.
setDefaultPreferenceValue
(
store
,
DBeaverPreferences
.
UI_AUTO_UPDATE_CHECK
,
true
);
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/BinaryPanelEditor.java
浏览文件 @
a464e72c
...
...
@@ -19,14 +19,19 @@ package org.jkiss.dbeaver.ui.data.managers.stream;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.IContributionManager
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.graphics.FontData
;
import
org.jkiss.code.NotNull
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.DBeaverCore
;
import
org.jkiss.dbeaver.model.DBValueFormatting
;
import
org.jkiss.dbeaver.model.data.DBDContent
;
import
org.jkiss.dbeaver.model.data.DBDContentStorage
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.impl.BytesContentStorage
;
import
org.jkiss.dbeaver.model.preferences.DBPPreferenceListener
;
import
org.jkiss.dbeaver.model.preferences.DBPPreferenceStore
;
import
org.jkiss.dbeaver.model.preferences.DBPPreferenceListener.PreferenceChangeEvent
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.ui.DBeaverIcons
;
import
org.jkiss.dbeaver.ui.UIIcon
;
...
...
@@ -34,6 +39,7 @@ import org.jkiss.dbeaver.ui.data.IStreamValueEditor;
import
org.jkiss.dbeaver.ui.data.IValueController
;
import
org.jkiss.dbeaver.ui.editors.binary.BinaryContent
;
import
org.jkiss.dbeaver.ui.editors.binary.HexEditControl
;
import
org.jkiss.dbeaver.ui.editors.binary.pref.HexPreferencesPage
;
import
org.jkiss.dbeaver.utils.ContentUtils
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
...
...
@@ -50,9 +56,22 @@ public class BinaryPanelEditor implements IStreamValueEditor<HexEditControl> {
private
static
final
Log
log
=
Log
.
getLog
(
BinaryPanelEditor
.
class
);
@Override
public
HexEditControl
createControl
(
IValueController
valueController
)
{
return
new
HexEditControl
(
valueController
.
getEditPlaceholder
(),
SWT
.
BORDER
);
public
HexEditControl
createControl
(
IValueController
valueController
){
HexEditControl
hControl
=
new
HexEditControl
(
valueController
.
getEditPlaceholder
(),
SWT
.
BORDER
);
DBPPreferenceListener
preferencesChangeListener
=
new
DBPPreferenceListener
()
{
@Override
public
void
preferenceChange
(
PreferenceChangeEvent
event
)
{
if
(
HexPreferencesPage
.
PROP_DEF_WIDTH
.
equals
(
event
.
getProperty
()))
{
String
defValue
=
(
String
)
event
.
getNewValue
();
hControl
.
setDefWidth
(
Integer
.
valueOf
(
defValue
));
}
}
};
DBPPreferenceStore
store
=
DBeaverCore
.
getGlobalPreferenceStore
();
store
.
addPropertyChangeListener
(
preferencesChangeListener
);
return
hControl
;
}
@Override
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/BinaryEditor.java
浏览文件 @
a464e72c
...
...
@@ -123,6 +123,7 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen
manager
=
new
HexManager
();
manager
.
setTextFont
(
HexPreferencesPage
.
getPrefFontData
());
manager
.
setDefWidth
(
HexPreferencesPage
.
getDefaultWidth
());
manager
.
setMenuListener
(
this
);
int
editorStyle
=
SWT
.
NONE
;
if
(
storage
!=
null
&&
storage
.
isReadOnly
())
{
...
...
@@ -162,13 +163,19 @@ public class BinaryEditor extends EditorPart implements ISelectionProvider, IMen
@Override
public
void
preferenceChange
(
PreferenceChangeEvent
event
)
{
if
(
HexPreferencesPage
.
PROP_FONT_DATA
.
equals
(
event
.
getProperty
()))
if
(
HexPreferencesPage
.
PROP_FONT_DATA
.
equals
(
event
.
getProperty
()))
{
manager
.
setTextFont
((
FontData
)
event
.
getNewValue
());
}
if
(
HexPreferencesPage
.
PROP_DEF_WIDTH
.
equals
(
event
.
getProperty
()))
{
manager
.
setDefWidth
((
String
)
event
.
getNewValue
());
}
}
};
DBPPreferenceStore
store
=
DBeaverCore
.
getGlobalPreferenceStore
();
store
.
addPropertyChangeListener
(
preferencesChangeListener
);
manager
.
addLongSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexEditControl.java
浏览文件 @
a464e72c
...
...
@@ -28,6 +28,7 @@ import org.eclipse.swt.widgets.*;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.editors.binary.pref.HexPreferencesPage
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
org.jkiss.utils.CommonUtils
;
...
...
@@ -75,11 +76,6 @@ public class HexEditControl extends Composite {
static
final
int
SHIFT_FORWARD
=
1
;
// frame
static
final
int
SHIFT_BACKWARD
=
2
;
static
final
int
BYTE_WIDTH_16
=
16
;
static
final
int
BYTE_WIDTH_8
=
8
;
static
final
int
BYTE_WIDTH_4
=
4
;
static
final
int
BYTE_WIDTH_2
=
2
;
static
{
// Compose header row
StringBuilder
rowChars
=
new
StringBuilder
();
...
...
@@ -150,6 +146,8 @@ public class HexEditControl extends Composite {
private
Text
previewTextSeparator
=
null
;
private
StyledText
previewText
=
null
;
private
int
defWidth
=
Integer
.
valueOf
(
HexPreferencesPage
.
getDefaultWidth
());
/**
* Get long selection start and end points. Helper method for long selection listeners.
* The start point is formed by event.width as the most significant int and event.x as the least
...
...
@@ -307,7 +305,7 @@ public class HexEditControl extends Composite {
}
private
class
ControlPaintAdapter
implements
PaintListener
{
boolean
hexContent
=
false
;
boolean
hexContent
=
false
;
ControlPaintAdapter
(
boolean
isHexText
)
{
...
...
@@ -327,7 +325,7 @@ public class HexEditControl extends Composite {
rightHalfWidth
=
(
lineWidth
+
1
)
/
2
;
// line spans to both sides of its position
}
event
.
gc
.
setLineWidth
(
lineWidth
);
for
(
int
block
=
BYTE_WIDTH_16
;
block
<=
bytesPerLine
;
block
+=
BYTE_WIDTH_16
)
{
for
(
int
block
=
defWidth
;
block
<=
bytesPerLine
;
block
+=
defWidth
)
{
int
xPos
=
(
charLen
*
block
)
*
fontCharWidth
-
rightHalfWidth
;
event
.
gc
.
drawLine
(
xPos
,
event
.
y
,
xPos
,
event
.
y
+
event
.
height
);
}
...
...
@@ -422,7 +420,7 @@ public class HexEditControl extends Composite {
public
HexEditControl
(
final
Composite
parent
,
int
style
)
{
this
(
parent
,
style
,
12
,
16
);
this
(
parent
,
style
,
12
,
16
);
}
/**
...
...
@@ -2030,29 +2028,8 @@ public class HexEditControl extends Composite {
int
width
=
getClientArea
().
width
-
linesText
.
computeSize
(
SWT
.
DEFAULT
,
SWT
.
DEFAULT
).
x
;
int
displayedNumberWidth
=
fontCharWidth
*
4
;
// hexText and previewText
int
commonWidth
=
width
/
displayedNumberWidth
;
bytesPerLine
=
commonWidth
;
if
(
commonWidth
>=
BYTE_WIDTH_16
)
{
bytesPerLine
=
0
;
int
comPart
=
commonWidth
/
BYTE_WIDTH_16
;
int
remPart
=
commonWidth
%
BYTE_WIDTH_16
;
if
(
remPart
>=
BYTE_WIDTH_8
)
{
bytesPerLine
=
BYTE_WIDTH_8
;
remPart
=
remPart
%
BYTE_WIDTH_8
;
}
else
if
(
remPart
>=
BYTE_WIDTH_4
)
{
bytesPerLine
=
BYTE_WIDTH_4
;
remPart
=
remPart
%
BYTE_WIDTH_4
;
}
else
if
(
remPart
>=
BYTE_WIDTH_2
)
{
bytesPerLine
=
BYTE_WIDTH_2
;
}
bytesPerLine
+=
comPart
*
BYTE_WIDTH_16
;
}
else
if
(
commonWidth
>=
BYTE_WIDTH_8
&&
commonWidth
<
BYTE_WIDTH_16
)
{
bytesPerLine
=
BYTE_WIDTH_8
;
}
else
if
(
commonWidth
>=
BYTE_WIDTH_4
&&
commonWidth
<
BYTE_WIDTH_8
)
{
bytesPerLine
=
BYTE_WIDTH_4
;
}
else
{
bytesPerLine
=
BYTE_WIDTH_2
;
}
textGridData
.
widthHint
=
hexText
.
computeTrim
(
0
,
0
,
bytesPerLine
*
3
*
fontCharWidth
,
100
).
width
;
previewGridData
.
widthHint
=
previewText
.
computeTrim
(
0
,
0
,
bytesPerLine
*
fontCharWidth
,
100
).
width
;
updateNumberOfLines
();
...
...
@@ -2063,4 +2040,9 @@ public class HexEditControl extends Composite {
redrawTextAreas
(
true
);
}
public
void
setDefWidth
(
int
defValue
)
{
this
.
defWidth
=
defValue
;
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/HexManager.java
浏览文件 @
a464e72c
...
...
@@ -57,6 +57,8 @@ public class HexManager {
private
HexStatusLine
statusLine
=
null
;
private
Composite
textsParent
=
null
;
private
IMenuListener
menuListener
;
private
String
defWidth
;
public
HexEditControl
getControl
()
{
...
...
@@ -143,6 +145,9 @@ public class HexManager {
fontText
=
new
Font
(
Display
.
getCurrent
(),
fontData
);
hexEditControl
.
setFont
(
fontText
);
}
if
(
defWidth
!=
null
)
{
hexEditControl
.
setDefWidth
(
Integer
.
valueOf
(
defWidth
));
}
//hexEditControl.addLongSelectionListener(new ControlSelectionAdapter(ControlSelectionAdapter.UPDATE_POSITION_TEXT));
hexEditControl
.
addListener
(
SWT
.
Modify
,
new
Listener
()
{
...
...
@@ -506,4 +511,13 @@ public class HexManager {
this
.
menuListener
=
menuListener
;
}
public
void
setDefWidth
(
String
defValue
)
{
this
.
defWidth
=
defValue
;
}
public
String
getDefaultWidth
()
{
return
defWidth
;
}
}
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesManager.java
浏览文件 @
a464e72c
...
...
@@ -16,7 +16,16 @@
*/
package
org.jkiss.dbeaver.ui.editors.binary.pref
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.Iterator
;
import
java.util.Set
;
import
java.util.TreeMap
;
import
java.util.TreeSet
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.custom.CLabel
;
import
org.eclipse.swt.events.DisposeEvent
;
import
org.eclipse.swt.events.DisposeListener
;
import
org.eclipse.swt.events.SelectionAdapter
;
...
...
@@ -27,15 +36,18 @@ import org.eclipse.swt.graphics.GC;
import
org.eclipse.swt.layout.FillLayout
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.widgets.*
;
import
org.eclipse.swt.widgets.Combo
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Display
;
import
org.eclipse.swt.widgets.Group
;
import
org.eclipse.swt.widgets.Label
;
import
org.eclipse.swt.widgets.List
;
import
org.eclipse.swt.widgets.Text
;
import
org.jkiss.dbeaver.core.CoreMessages
;
import
org.jkiss.dbeaver.core.DBeaverUI
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.editors.binary.HexEditControl
;
import
java.util.*
;
/**
* Manager of all preferences-editing widgets, with an optional standalone dialog.
*
...
...
@@ -71,7 +83,10 @@ public class HexPreferencesManager {
private
List
list2
=
null
;
private
Font
sampleFont
=
null
;
private
Text
sampleText
=
null
;
private
Combo
cmbByteWidth
=
null
;
private
String
defWidthValue
;
private
static
String
[]
arrDefValuetoIndex
=
new
String
[]
{
"4"
,
"8"
,
"16"
};
static
int
fontStyleToInt
(
String
styleString
)
{
int
style
=
SWT
.
NORMAL
;
...
...
@@ -101,10 +116,10 @@ public class HexPreferencesManager {
}
public
HexPreferencesManager
(
FontData
aFontData
)
{
public
HexPreferencesManager
(
FontData
aFontData
,
String
defWidth
)
{
sampleFontData
=
aFontData
;
fontsSorted
=
new
TreeMap
<>();
defWidthValue
=
defWidth
;
}
...
...
@@ -212,7 +227,29 @@ public class HexPreferencesManager {
}
}
});
Composite
cmpByteSettings
=
new
Composite
(
parent
,
SWT
.
BORDER
);
cmpByteSettings
.
setLayout
(
new
GridLayout
(
4
,
false
));
cmpByteSettings
.
setLayoutData
(
new
GridData
(
SWT
.
FILL
,
SWT
.
FILL
,
true
,
true
));
GridData
gdLabel
=
new
GridData
(
SWT
.
FILL
,
SWT
.
FILL
,
false
,
false
,
1
,
1
);
gdLabel
.
heightHint
=
26
;
gdLabel
.
widthHint
=
120
;
CLabel
lbl
=
new
CLabel
(
cmpByteSettings
,
SWT
.
NONE
);
lbl
.
setText
(
"Default width"
);
lbl
.
setLayoutData
(
gdLabel
);
cmbByteWidth
=
new
Combo
(
cmpByteSettings
,
SWT
.
BORDER
);
cmbByteWidth
.
setItems
(
arrDefValuetoIndex
);
int
index
=
Arrays
.
asList
(
arrDefValuetoIndex
).
indexOf
(
defWidthValue
);
cmbByteWidth
.
select
(
index
);
cmbByteWidth
.
setLayoutData
(
new
GridData
(
SWT
.
FILL
,
SWT
.
FILL
,
false
,
false
,
1
,
1
));
}
public
String
getDefWidth
()
{
return
cmbByteWidth
.
getText
();
}
/**
...
...
@@ -406,7 +443,8 @@ public class HexPreferencesManager {
sampleFontData
=
aFontData
;
refreshWidgets
();
}
static
void
showSelected
(
List
aList
,
String
item
)
{
...
...
plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/binary/pref/HexPreferencesPage.java
浏览文件 @
a464e72c
...
...
@@ -38,6 +38,7 @@ import org.jkiss.utils.CommonUtils;
public
class
HexPreferencesPage
extends
AbstractPrefPage
implements
IWorkbenchPreferencePage
{
public
static
final
String
PROP_FONT_DATA
=
"prop.hex.font.data"
;
public
static
final
String
PROP_DEF_WIDTH
=
"default.hex.width"
;
private
HexPreferencesManager
preferences
=
null
;
...
...
@@ -59,7 +60,10 @@ public class HexPreferencesPage extends AbstractPrefPage implements IWorkbenchPr
return
null
;
}
public
static
String
getDefaultWidth
()
{
DBPPreferenceStore
store
=
DBeaverCore
.
getGlobalPreferenceStore
();
return
store
.
getString
(
DBeaverPreferences
.
HEX_DEF_WIDTH
);
}
/**
* @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
*/
...
...
@@ -67,7 +71,8 @@ public class HexPreferencesPage extends AbstractPrefPage implements IWorkbenchPr
protected
Control
createContents
(
Composite
parent
)
{
FontData
fontData
=
getPrefFontData
();
preferences
=
new
HexPreferencesManager
(
fontData
);
String
defWidth
=
getDefaultWidth
();
preferences
=
new
HexPreferencesManager
(
fontData
,
defWidth
);
return
preferences
.
createPreferencesPart
(
parent
);
}
...
...
@@ -106,6 +111,9 @@ public class HexPreferencesPage extends AbstractPrefPage implements IWorkbenchPr
store
.
setValue
(
DBeaverPreferences
.
HEX_FONT_SIZE
,
fontData
.
getHeight
());
store
.
firePropertyChangeEvent
(
PROP_FONT_DATA
,
null
,
fontData
);
store
.
setValue
(
DBeaverPreferences
.
HEX_DEF_WIDTH
,
preferences
.
getDefWidth
());
store
.
firePropertyChangeEvent
(
PROP_DEF_WIDTH
,
0
,
preferences
.
getDefWidth
());
PrefUtils
.
savePreferenceStore
(
store
);
return
true
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录