Split pit-swing into multiple MVC components. Added the ability to open

multiple issue repos simultaneously.

Seperated the main split pane into its own MVC.
Seperated out the new issue dialog into its own MVC

Need to write testing code.
This commit is contained in:
Jonathan Bernard 2010-03-09 10:17:26 -06:00
parent fcec66de70
commit ec690f8a98
4 changed files with 30 additions and 17 deletions

View File

@ -44,6 +44,12 @@ class PITController {
model.newIssueDialogMVC = buildMVCGroup('NewIssueDialog') model.newIssueDialogMVC = buildMVCGroup('NewIssueDialog')
} }
void refreshIssues() {
model.projectPanelMVCs.each { title, mvc ->
mvc.controller.refreshIssues()
}
}
def openProject = { evt = null -> def openProject = { evt = null ->
def projectDir def projectDir
def newMVC def newMVC

View File

@ -16,9 +16,7 @@ class ProjectPanelController {
def view def view
void mvcGroupInit(Map args) { void mvcGroupInit(Map args) {
//model.rootProject = args.rootProject refreshProject()
view.projectTree.model = new DefaultTreeModel(
makeNodes(model.rootProject))
} }
/** /**
@ -56,6 +54,22 @@ class ProjectPanelController {
view.issuePopupMenu.show(view.issueList, x, y) view.issuePopupMenu.show(view.issueList, x, y)
} }
void refreshProject() {
if (model.rootProject) {
view.projectTree.rootVisible = model.rootProject.issues.size()
view.projectTree.model = new DefaultTreeModel(
makeNodes(model.rootProject))
} else {
projectTree.rootVisible = false
view.projectTree.model = new DefaultTreeModel(
new DefaultMutableTreeNode())
}
}
void refreshIssues() {
model.projectListModels.clear()
displayProject(model.selectedProject)
}
def makeNodes(Project project) { def makeNodes(Project project) {
def rootNode = new DefaultMutableTreeNode(project) def rootNode = new DefaultMutableTreeNode(project)

View File

@ -87,8 +87,7 @@ frame = application(title:'Personal Issue Tracker',
model.filter.categories.add(cat) model.filter.categories.add(cat)
evt.source.selected = true evt.source.selected = true
} }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(model.selectedProject)
}) })
} }
} }
@ -105,8 +104,7 @@ frame = application(title:'Personal Issue Tracker',
model.filter.status.add(st) model.filter.status.add(st)
evt.source.selected = true evt.source.selected = true
} }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(model.selectedProject)
}) })
} }
} }
@ -119,36 +117,31 @@ frame = application(title:'Personal Issue Tracker',
buttonGroup: sortMenuButtonGroup, buttonGroup: sortMenuButtonGroup,
actionPerformed: { actionPerformed: {
model.filter.issueSorter = { it.id } model.filter.issueSorter = { it.id }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(selectedProject)
}) })
checkBoxMenuItem('By Category', checkBoxMenuItem('By Category',
buttonGroup: sortMenuButtonGroup, buttonGroup: sortMenuButtonGroup,
actionPerformed: { actionPerformed: {
model.filter.issueSorter = { it.category } model.filter.issueSorter = { it.category }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(selectedProject)
}) })
checkBoxMenuItem('By Status', checkBoxMenuItem('By Status',
buttonGroup: sortMenuButtonGroup, buttonGroup: sortMenuButtonGroup,
actionPerformed: { actionPerformed: {
model.filter.issueSorter = { it.status } model.filter.issueSorter = { it.status }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(selectedProject)
}) })
checkBoxMenuItem('By Priority', checkBoxMenuItem('By Priority',
buttonGroup: sortMenuButtonGroup, buttonGroup: sortMenuButtonGroup,
actionPerformed: { actionPerformed: {
model.filter.issueSorter = { it.priority } model.filter.issueSorter = { it.priority }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(selectedProject)
}) })
checkBoxMenuItem('By Title', checkBoxMenuItem('By Title',
buttonGroup: sortMenuButtonGroup, buttonGroup: sortMenuButtonGroup,
actionPerformed: { actionPerformed: {
model.filter.issueSorter = { it.title } model.filter.issueSorter = { it.title }
model.projectListModels.clear() controller.refreshIssues()
controller.displayProject(selectedProject)
}) })
} }
} }