Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
sanbo_xyz
Gephi
提交
3202047f
G
Gephi
项目概览
sanbo_xyz
/
Gephi
10 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
3202047f
编写于
1月 01, 2023
作者:
M
Mathieu Bastian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Correct issues on project management
上级
6d4ef9c7
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
94 addition
and
10 deletion
+94
-10
modules/DesktopProject/src/main/java/org/gephi/desktop/project/ProjectControllerUIImpl.java
...va/org/gephi/desktop/project/ProjectControllerUIImpl.java
+23
-0
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/ManageProjects.java
...ava/org/gephi/desktop/project/actions/ManageProjects.java
+1
-2
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/OpenFile.java
...main/java/org/gephi/desktop/project/actions/OpenFile.java
+3
-0
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/RecentFiles.java
...n/java/org/gephi/desktop/project/actions/RecentFiles.java
+4
-0
modules/DesktopProject/src/main/java/org/gephi/ui/project/ProjectList.java
...oject/src/main/java/org/gephi/ui/project/ProjectList.java
+24
-2
modules/DesktopProject/src/main/resources/org/gephi/desktop/project/actions/Bundle.properties
...urces/org/gephi/desktop/project/actions/Bundle.properties
+1
-1
modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java
...in/java/org/gephi/project/impl/ProjectControllerImpl.java
+2
-2
modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectsImpl.java
...PI/src/main/java/org/gephi/project/impl/ProjectsImpl.java
+21
-3
modules/ProjectAPI/src/test/java/org/gephi/project/impl/ProjectsImplTest.java
...rc/test/java/org/gephi/project/impl/ProjectsImplTest.java
+15
-0
未找到文件。
modules/DesktopProject/src/main/java/org/gephi/desktop/project/ProjectControllerUIImpl.java
浏览文件 @
3202047f
...
...
@@ -345,6 +345,17 @@ public class ProjectControllerUIImpl implements ProjectListener {
return
true
;
}
public
void
openProject
(
Project
project
)
{
longTaskExecutor
.
execute
(
null
,
()
->
{
if
(
controller
.
getCurrentProject
()
!=
null
)
{
if
(!
closeCurrentProject
())
{
return
;
}
}
controller
.
openProject
(
project
);
});
}
public
void
openProject
(
File
file
)
{
longTaskExecutor
.
execute
(
null
,
()
->
{
if
(
controller
.
getCurrentProject
()
!=
null
)
{
...
...
@@ -356,6 +367,17 @@ public class ProjectControllerUIImpl implements ProjectListener {
});
}
public
void
removeProject
(
Project
project
)
{
longTaskExecutor
.
execute
(
null
,
()
->
{
if
(
controller
.
getCurrentProject
()
==
project
)
{
if
(!
closeCurrentProject
())
{
return
;
}
}
controller
.
removeProject
(
project
);
});
}
public
boolean
canCloseProject
()
{
return
closeProject
;
}
...
...
@@ -459,6 +481,7 @@ public class ProjectControllerUIImpl implements ProjectListener {
ProjectList
panel
=
new
ProjectList
();
DialogDescriptor
dd
=
new
DialogDescriptor
(
panel
,
NbBundle
.
getMessage
(
ProjectControllerUIImpl
.
class
,
"ManageProjects_dialog_title"
));
dd
.
setOptions
(
new
Object
[]
{
NotifyDescriptor
.
CLOSED_OPTION
});
DialogDisplayer
.
getDefault
().
notify
(
dd
);
}
...
...
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/ManageProjects.java
浏览文件 @
3202047f
...
...
@@ -12,7 +12,6 @@ import org.openide.util.NbBundle;
@ActionID
(
id
=
"org.gephi.desktop.project.actions.ManageProjects"
,
category
=
"File"
)
@ActionRegistration
(
displayName
=
"#CTL_ManageProjects"
,
lazy
=
false
)
@ActionReference
(
path
=
"Menu/File"
,
position
=
490
)
public
final
class
ManageProjects
extends
AbstractAction
{
ManageProjects
()
{
...
...
@@ -21,7 +20,7 @@ public final class ManageProjects extends AbstractAction {
@Override
public
boolean
isEnabled
()
{
return
Lookup
.
getDefault
().
lookup
(
ProjectControllerUIImpl
.
class
).
canProjectProperties
()
;
return
true
;
}
@Override
...
...
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/OpenFile.java
浏览文件 @
3202047f
...
...
@@ -48,6 +48,7 @@ import javax.swing.AbstractAction;
import
org.gephi.desktop.importer.api.ImportControllerUI
;
import
org.gephi.desktop.project.ProjectControllerUIImpl
;
import
org.gephi.io.importer.spi.FileImporterBuilder
;
import
org.gephi.project.api.Project
;
import
org.openide.DialogDisplayer
;
import
org.openide.NotifyDescriptor
;
import
org.openide.awt.ActionID
;
...
...
@@ -100,6 +101,8 @@ public final class OpenFile extends AbstractAction {
}
else
if
(
ev
!=
null
&&
ev
.
getSource
()
!=
null
&&
ev
.
getSource
()
instanceof
FileImporterBuilder
[])
{
Lookup
.
getDefault
().
lookup
(
ProjectControllerUIImpl
.
class
)
.
openFile
((
FileImporterBuilder
[])
ev
.
getSource
());
}
else
if
(
ev
!=
null
&&
ev
.
getSource
()
!=
null
&&
ev
.
getSource
()
instanceof
Project
)
{
Lookup
.
getDefault
().
lookup
(
ProjectControllerUIImpl
.
class
).
openProject
((
Project
)
ev
.
getSource
());
}
else
{
Lookup
.
getDefault
().
lookup
(
ProjectControllerUIImpl
.
class
).
openFile
();
}
...
...
modules/DesktopProject/src/main/java/org/gephi/desktop/project/actions/RecentFiles.java
浏览文件 @
3202047f
...
...
@@ -123,6 +123,10 @@ public class RecentFiles extends AbstractAction implements DynamicMenuContent {
}
items
.
addAll
(
filesItems
);
// Manage projects
items
.
add
(
new
JSeparator
());
items
.
add
(
new
JMenuItem
(
Actions
.
forID
(
"File"
,
"org.gephi.desktop.project.actions.ManageProjects"
)));
return
items
.
toArray
(
new
JComponent
[
0
]);
}
...
...
modules/DesktopProject/src/main/java/org/gephi/ui/project/ProjectList.java
浏览文件 @
3202047f
...
...
@@ -2,12 +2,15 @@ package org.gephi.ui.project;
import
java.awt.Component
;
import
java.awt.Font
;
import
java.awt.event.ActionEvent
;
import
javax.swing.DefaultListCellRenderer
;
import
javax.swing.DefaultListModel
;
import
javax.swing.JLabel
;
import
javax.swing.JList
;
import
org.gephi.desktop.project.ProjectControllerUIImpl
;
import
org.gephi.project.api.Project
;
import
org.gephi.project.api.ProjectController
;
import
org.openide.awt.Actions
;
import
org.openide.util.Lookup
;
public
class
ProjectList
extends
javax
.
swing
.
JPanel
{
...
...
@@ -23,12 +26,27 @@ public class ProjectList extends javax.swing.JPanel {
projectList
.
setCellRenderer
(
new
ProjectCellRenderer
());
projectList
.
addListSelectionListener
(
evt
->
{
if
(!
evt
.
getValueIsAdjusting
())
{
Project
project
=
projectList
.
getModel
().
getElementAt
(
projectList
.
getSelectedIndex
());
Project
project
=
null
;
if
(
projectList
.
getSelectedIndex
()
!=
-
1
)
{
project
=
projectList
.
getModel
().
getElementAt
(
projectList
.
getSelectedIndex
());
}
openProjectButton
.
setEnabled
(
project
!=
null
&&
project
.
isClosed
());
removeProjectButton
.
setEnabled
(
project
!=
null
);
}
});
openProjectButton
.
addActionListener
(
evt
->
{
Project
project
=
projectList
.
getModel
().
getElementAt
(
projectList
.
getSelectedIndex
());
Actions
.
forID
(
"File"
,
"org.gephi.desktop.project.actions.OpenFile"
).
actionPerformed
(
new
ActionEvent
(
project
,
0
,
null
));
});
removeProjectButton
.
addActionListener
(
evt
->
{
Project
project
=
projectList
.
getModel
().
getElementAt
(
projectList
.
getSelectedIndex
());
Lookup
.
getDefault
().
lookup
(
ProjectControllerUIImpl
.
class
).
removeProject
(
project
);
((
DefaultListModel
<
Project
>)
projectList
.
getModel
()).
removeElement
(
project
);
});
setup
();
}
...
...
@@ -54,7 +72,11 @@ public class ProjectList extends javax.swing.JPanel {
}
else
{
c
.
setFont
(
c
.
getFont
().
deriveFont
(
Font
.
PLAIN
));
}
c
.
setText
(
p
.
getName
());
String
name
=
p
.
getName
();
if
(
p
.
getFileName
()
!=
null
)
{
name
+=
" ("
+
p
.
getFileName
()
+
")"
;
}
c
.
setText
(
name
);
return
c
;
}
}
...
...
modules/DesktopProject/src/main/resources/org/gephi/desktop/project/actions/Bundle.properties
浏览文件 @
3202047f
...
...
@@ -10,7 +10,7 @@ CTL_DuplicateWorkspace=Duplicate
CTL_DeleteWorkspace
=
Delete
CTL_DeleteOtherWorkspaces
=
Delete Other Workspaces
CTL_RenameWorkspace
=
Rename
CTL_ManageProjects
=
Projects...
CTL_ManageProjects
=
Manage
Projects...
CTL_WorkspaceProperties
=
Properties...
CTL_OpenOnlineDoc
=
Online docs and support
RenameWorkspace.dialog.title
=
Rename Workspace
...
...
modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectControllerImpl.java
浏览文件 @
3202047f
...
...
@@ -292,11 +292,11 @@ public class ProjectControllerImpl implements ProjectController {
}
private
void
openProjectInternal
(
Project
project
)
{
final
ProjectImpl
projectImpl
=
(
ProjectImpl
)
project
;
ProjectImpl
projectImpl
=
(
ProjectImpl
)
project
;
if
(
projects
.
hasCurrentProject
())
{
closeCurrentProject
();
}
projects
.
addOrReplaceProject
(
projectImpl
);
project
Impl
=
project
s
.
addOrReplaceProject
(
projectImpl
);
projects
.
setCurrentProject
(
projectImpl
);
for
(
Workspace
ws
:
projectImpl
.
getWorkspaces
())
{
...
...
modules/ProjectAPI/src/main/java/org/gephi/project/impl/ProjectsImpl.java
浏览文件 @
3202047f
...
...
@@ -101,17 +101,35 @@ public class ProjectsImpl implements Projects {
return
null
;
}
public
void
addOrReplaceProject
(
ProjectImpl
project
)
{
public
ProjectImpl
addOrReplaceProject
(
ProjectImpl
project
)
{
synchronized
(
projects
)
{
if
(!
projects
.
contains
(
project
))
{
if
(
projects
.
contains
(
project
))
{
projects
.
remove
(
project
);
projects
.
add
(
project
);
}
else
{
projects
.
remove
(
project
);
ProjectImpl
projectWithSameFileName
=
findProjectByFile
(
project
.
getFile
());
if
(
projectWithSameFileName
!=
null
)
{
return
projectWithSameFileName
;
}
projects
.
add
(
project
);
}
return
project
;
}
}
private
ProjectImpl
findProjectByFile
(
File
file
)
{
if
(
file
!=
null
)
{
synchronized
(
projects
)
{
for
(
ProjectImpl
p
:
projects
)
{
if
(
p
.
getFile
().
equals
(
file
))
{
return
p
;
}
}
}
}
return
null
;
}
public
void
removeProject
(
ProjectImpl
project
)
{
synchronized
(
projects
)
{
projects
.
remove
(
project
);
...
...
modules/ProjectAPI/src/test/java/org/gephi/project/impl/ProjectsImplTest.java
浏览文件 @
3202047f
...
...
@@ -91,4 +91,19 @@ public class ProjectsImplTest {
Assert
.
assertEquals
(
"p1"
,
projects
.
getProjectByIdentifier
(
"i1"
).
getName
());
Assert
.
assertEquals
(
"p2"
,
projects
.
getProjectByIdentifier
(
"i2"
).
getName
());
}
@Test
public
void
testDoesNotCreateNewProjectSameFile
()
throws
IOException
{
ProjectsImpl
projects
=
new
ProjectsImpl
();
ProjectImpl
p1
=
new
ProjectImpl
(
"i1"
,
"p1"
);
Assert
.
assertSame
(
p1
,
projects
.
addOrReplaceProject
(
p1
));
File
file
=
tempFolder
.
newFile
(
"p1.gephi"
);
p1
.
setFile
(
file
);
ProjectImpl
p2
=
new
ProjectImpl
(
"i2"
,
"p2"
);
p2
.
setFile
(
file
);
Assert
.
assertSame
(
p1
,
projects
.
addOrReplaceProject
(
p2
));
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录