Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Christnowx
Gephi
提交
9b749b49
G
Gephi
项目概览
Christnowx
/
Gephi
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gephi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9b749b49
编写于
2月 07, 2016
作者:
E
Eduardo Ramos
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix #1343 Current time format is not respected when representing TimestampSet in data laboratory
上级
55f6484a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
203 addition
and
27 deletion
+203
-27
modules/DesktopDataLaboratory/src/main/java/org/gephi/desktop/datalab/tables/AbstractElementsDataTable.java
...phi/desktop/datalab/tables/AbstractElementsDataTable.java
+38
-26
modules/DesktopDataLaboratory/src/main/java/org/gephi/desktop/datalab/utils/TimestampSetRenderer.java
...org/gephi/desktop/datalab/utils/TimestampSetRenderer.java
+164
-0
modules/DesktopDataLaboratory/src/main/nbm/manifest.mf
modules/DesktopDataLaboratory/src/main/nbm/manifest.mf
+1
-1
未找到文件。
modules/DesktopDataLaboratory/src/main/java/org/gephi/desktop/datalab/tables/AbstractElementsDataTable.java
浏览文件 @
9b749b49
...
...
@@ -63,6 +63,7 @@ import org.gephi.desktop.datalab.utils.IntervalMapRenderer;
import
org.gephi.desktop.datalab.utils.TimestampMapRenderer
;
import
org.gephi.desktop.datalab.utils.SparkLinesRenderer
;
import
org.gephi.desktop.datalab.utils.IntervalSetRenderer
;
import
org.gephi.desktop.datalab.utils.TimestampSetRenderer
;
import
org.gephi.graph.api.AttributeUtils
;
import
org.gephi.graph.api.Element
;
import
org.gephi.graph.api.GraphModel
;
...
...
@@ -71,6 +72,7 @@ import org.gephi.graph.api.TimeFormat;
import
org.gephi.graph.api.types.IntervalMap
;
import
org.gephi.graph.api.types.IntervalSet
;
import
org.gephi.graph.api.types.TimestampMap
;
import
org.gephi.graph.api.types.TimestampSet
;
import
org.jdesktop.swingx.JXTable
;
import
org.jdesktop.swingx.decorator.HighlighterFactory
;
import
org.joda.time.DateTimeZone
;
...
...
@@ -91,6 +93,7 @@ public abstract class AbstractElementsDataTable<T extends Element> {
protected
Column
[]
showingColumns
=
null
;
protected
ElementsDataTableModel
<
T
>
model
;
private
final
IntervalSetRenderer
intervalSetRenderer
;
private
final
TimestampSetRenderer
timestampSetRenderer
;
private
final
IntervalMapRenderer
intervalMapRenderer
;
private
final
TimestampMapRenderer
timestampMapRenderer
;
private
final
List
<
AttributeTypesSupportCellEditor
>
cellEditors
=
new
ArrayList
<
AttributeTypesSupportCellEditor
>();
...
...
@@ -108,6 +111,7 @@ public abstract class AbstractElementsDataTable<T extends Element> {
table
.
setAutoCreateRowSorter
(
true
);
sparkLinesRenderers
=
new
ArrayList
<
SparkLinesRenderer
>();
intervalSetRenderer
=
new
IntervalSetRenderer
();
timestampSetRenderer
=
new
TimestampSetRenderer
();
intervalMapRenderer
=
new
IntervalMapRenderer
();
timestampMapRenderer
=
new
TimestampMapRenderer
();
...
...
@@ -135,6 +139,9 @@ public abstract class AbstractElementsDataTable<T extends Element> {
if
(
typeClass
.
equals
(
IntervalSet
.
class
))
{
typeRenderer
=
intervalSetRenderer
;
}
if
(
typeClass
.
equals
(
TimestampSet
.
class
))
{
typeRenderer
=
timestampSetRenderer
;
}
boolean
isNumberType
=
AttributeUtils
.
isNumberType
(
typeClass
);
...
...
@@ -217,25 +224,8 @@ public abstract class AbstractElementsDataTable<T extends Element> {
Interval
timeBounds
=
graphModel
.
getTimeBounds
();
double
min
=
timeBounds
!=
null
?
timeBounds
.
getLow
()
:
Double
.
NEGATIVE_INFINITY
;
double
max
=
timeBounds
!=
null
?
timeBounds
.
getHigh
()
:
Double
.
POSITIVE_INFINITY
;
TimeFormat
currentTimeFormat
=
graphModel
.
getTimeFormat
();
DateTimeZone
currentTimeZone
=
graphModel
.
getTimeZone
();
for
(
SparkLinesRenderer
sparkLinesRenderer
:
sparkLinesRenderers
)
{
sparkLinesRenderer
.
setTimeFormat
(
currentTimeFormat
);
sparkLinesRenderer
.
setTimeZone
(
currentTimeZone
);
}
intervalSetRenderer
.
setTimeFormat
(
currentTimeFormat
);
intervalSetRenderer
.
setTimeZone
(
currentTimeZone
);
intervalSetRenderer
.
setMinMax
(
min
,
max
);
intervalMapRenderer
.
setTimeFormat
(
currentTimeFormat
);
intervalMapRenderer
.
setTimeZone
(
currentTimeZone
);
timestampMapRenderer
.
setTimeZone
(
currentTimeZone
);
for
(
AttributeTypesSupportCellEditor
cellEditor
:
cellEditors
)
{
cellEditor
.
setTimeFormat
(
currentTimeFormat
);
cellEditor
.
setTimeZone
(
currentTimeZone
);
}
refreshCellRenderersAndEditorsConfiguration
(
graphModel
,
min
,
max
);
refreshingTable
=
true
;
if
(
selectedElements
==
null
)
{
...
...
@@ -260,6 +250,35 @@ public abstract class AbstractElementsDataTable<T extends Element> {
refreshingTable
=
false
;
}
private
void
refreshCellRenderersAndEditorsConfiguration
(
GraphModel
graphModel
,
double
min
,
double
max
)
{
TimeFormat
currentTimeFormat
=
graphModel
.
getTimeFormat
();
DateTimeZone
currentTimeZone
=
graphModel
.
getTimeZone
();
for
(
SparkLinesRenderer
sparkLinesRenderer
:
sparkLinesRenderers
)
{
sparkLinesRenderer
.
setTimeFormat
(
currentTimeFormat
);
sparkLinesRenderer
.
setTimeZone
(
currentTimeZone
);
}
intervalSetRenderer
.
setTimeFormat
(
currentTimeFormat
);
intervalSetRenderer
.
setTimeZone
(
currentTimeZone
);
intervalSetRenderer
.
setMinMax
(
min
,
max
);
timestampSetRenderer
.
setTimeFormat
(
currentTimeFormat
);
timestampSetRenderer
.
setTimeZone
(
currentTimeZone
);
timestampSetRenderer
.
setMinMax
(
min
,
max
);
intervalMapRenderer
.
setTimeFormat
(
currentTimeFormat
);
intervalMapRenderer
.
setTimeZone
(
currentTimeZone
);
timestampMapRenderer
.
setTimeZone
(
currentTimeZone
);
for
(
AttributeTypesSupportCellEditor
cellEditor
:
cellEditors
)
{
cellEditor
.
setTimeFormat
(
currentTimeFormat
);
cellEditor
.
setTimeZone
(
currentTimeZone
);
}
}
public
boolean
isRefreshingTable
()
{
return
refreshingTable
;
}
...
...
@@ -302,22 +321,15 @@ public abstract class AbstractElementsDataTable<T extends Element> {
return
table
.
getRowCount
()
>
0
;
}
public
boolean
isDrawSparklines
()
{
return
sparkLinesRenderers
.
get
(
0
).
isDrawGraphics
();
}
public
void
setDrawSparklines
(
boolean
drawSparklines
)
{
for
(
SparkLinesRenderer
sparkLinesRenderer
:
sparkLinesRenderers
)
{
sparkLinesRenderer
.
setDrawGraphics
(
drawSparklines
);
}
}
public
boolean
isDrawTimeIntervalGraphics
()
{
return
intervalSetRenderer
.
isDrawGraphics
();
}
public
void
setDrawTimeIntervalGraphics
(
boolean
drawTimeIntervalGraphics
)
{
intervalSetRenderer
.
setDrawGraphics
(
drawTimeIntervalGraphics
);
timestampSetRenderer
.
setDrawGraphics
(
drawTimeIntervalGraphics
);
}
public
T
getElementFromRow
(
int
row
)
{
...
...
modules/DesktopDataLaboratory/src/main/java/org/gephi/desktop/datalab/utils/TimestampSetRenderer.java
0 → 100644
浏览文件 @
9b749b49
/*
Copyright 2008-2010 Gephi
Authors : Eduardo Ramos
Website : http://www.gephi.org
This file is part of Gephi.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
Copyright 2011 Gephi Consortium. All rights reserved.
The contents of this file are subject to the terms of either the GNU
General Public License Version 3 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
http://gephi.org/about/legal/license-notice/
or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
specific language governing permissions and limitations under the
License. When distributing the software, include this License Header
Notice in each file and include the License files at
/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"
If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 3, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 3] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 3 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 3 code and therefore, elected the GPL
Version 3 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
Contributor(s):
Portions Copyrighted 2011 Gephi Consortium.
*/
package
org.gephi.desktop.datalab.utils
;
import
java.awt.Color
;
import
java.awt.Component
;
import
java.awt.image.BufferedImage
;
import
javax.swing.ImageIcon
;
import
javax.swing.JLabel
;
import
javax.swing.JTable
;
import
javax.swing.table.DefaultTableCellRenderer
;
import
org.gephi.graph.api.TimeFormat
;
import
org.gephi.graph.api.types.TimestampSet
;
import
org.gephi.utils.TimeIntervalGraphics
;
import
org.joda.time.DateTimeZone
;
/**
* TableCellRenderer for drawing time intervals graphics from cells that have a {@link TimestampSet} as their value.
*
* @author Eduardo Ramos
*/
public
class
TimestampSetRenderer
extends
DefaultTableCellRenderer
{
private
static
final
Color
SELECTED_BACKGROUND
=
new
Color
(
225
,
255
,
255
);
private
static
final
Color
UNSELECTED_BACKGROUND
=
Color
.
white
;
private
static
final
Color
FILL_COLOR
=
new
Color
(
153
,
255
,
255
);
private
static
final
Color
BORDER_COLOR
=
new
Color
(
2
,
104
,
255
);
private
boolean
drawGraphics
=
false
;
private
final
TimeIntervalGraphics
timeIntervalGraphics
;
private
TimeFormat
timeFormat
=
TimeFormat
.
DOUBLE
;
private
DateTimeZone
timeZone
=
DateTimeZone
.
UTC
;
public
TimestampSetRenderer
()
{
this
(
Double
.
NEGATIVE_INFINITY
,
Double
.
POSITIVE_INFINITY
);
}
public
TimestampSetRenderer
(
double
min
,
double
max
)
{
timeIntervalGraphics
=
new
TimeIntervalGraphics
(
min
,
max
);
}
public
TimestampSetRenderer
(
double
min
,
double
max
,
boolean
drawGraphics
)
{
timeIntervalGraphics
=
new
TimeIntervalGraphics
(
min
,
max
);
this
.
drawGraphics
=
drawGraphics
;
}
@Override
public
Component
getTableCellRendererComponent
(
JTable
table
,
Object
value
,
boolean
isSelected
,
boolean
hasFocus
,
int
row
,
int
column
)
{
if
(
value
==
null
)
{
//Render empty string when null
return
super
.
getTableCellRendererComponent
(
table
,
null
,
isSelected
,
hasFocus
,
row
,
column
);
}
TimestampSet
timestampSet
=
(
TimestampSet
)
value
;
String
stringRepresentation
=
timestampSet
.
toString
(
timeFormat
,
timeZone
);
if
(
drawGraphics
)
{
JLabel
label
=
new
JLabel
();
Color
background
;
if
(
isSelected
)
{
background
=
SELECTED_BACKGROUND
;
}
else
{
background
=
UNSELECTED_BACKGROUND
;
}
double
[]
timestamps
=
timestampSet
.
toPrimitiveArray
();
double
starts
[]
=
new
double
[
timestamps
.
length
];
double
ends
[]
=
new
double
[
timestamps
.
length
];
for
(
int
i
=
0
;
i
<
timestamps
.
length
;
i
++)
{
starts
[
i
]
=
timestamps
[
i
];
ends
[
i
]
=
timestamps
[
i
];
}
final
BufferedImage
i
=
timeIntervalGraphics
.
createTimeIntervalImage
(
starts
,
ends
,
table
.
getColumnModel
().
getColumn
(
column
).
getWidth
()
-
1
,
table
.
getRowHeight
(
row
)
-
1
,
FILL_COLOR
,
BORDER_COLOR
,
background
);
label
.
setIcon
(
new
ImageIcon
(
i
));
label
.
setToolTipText
(
stringRepresentation
);
//String representation as tooltip
return
label
;
}
else
{
return
super
.
getTableCellRendererComponent
(
table
,
stringRepresentation
,
isSelected
,
hasFocus
,
row
,
column
);
}
}
public
boolean
isDrawGraphics
()
{
return
drawGraphics
;
}
public
void
setDrawGraphics
(
boolean
drawGraphics
)
{
this
.
drawGraphics
=
drawGraphics
;
}
public
TimeFormat
getTimeFormat
()
{
return
timeFormat
;
}
public
void
setTimeFormat
(
TimeFormat
timeFormat
)
{
this
.
timeFormat
=
timeFormat
;
}
public
DateTimeZone
getTimeZone
()
{
return
timeZone
;
}
public
void
setTimeZone
(
DateTimeZone
timeZone
)
{
this
.
timeZone
=
timeZone
;
}
public
double
getMax
()
{
return
timeIntervalGraphics
.
getMax
();
}
public
void
setMax
(
double
max
)
{
timeIntervalGraphics
.
setMax
(
max
);
}
public
double
getMin
()
{
return
timeIntervalGraphics
.
getMin
();
}
public
void
setMin
(
double
min
)
{
timeIntervalGraphics
.
setMin
(
min
);
}
public
void
setMinMax
(
double
min
,
double
max
)
{
timeIntervalGraphics
.
setMin
(
min
);
timeIntervalGraphics
.
setMax
(
max
);
}
}
modules/DesktopDataLaboratory/src/main/nbm/manifest.mf
浏览文件 @
9b749b49
...
...
@@ -2,6 +2,6 @@ Manifest-Version: 1.0
AutoUpdate-Essential-Module: true
OpenIDE-Module-Layer: org/gephi/desktop/datalab/layer.xml
OpenIDE-Module-Localizing-Bundle: org/gephi/desktop/datalab/Bundle.properties
OpenIDE-Module-Specification-Version: 0.9.0.
6
OpenIDE-Module-Specification-Version: 0.9.0.
7
OpenIDE-Module-Display-Category: Gephi UI
OpenIDE-Module-Name: Desktop Data Laboratory
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录