wip on content control panel ui
This commit is contained in:
@@ -15,6 +15,11 @@ class KeywordMatcher extends Matcher {
|
|||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTerm() {
|
||||||
|
keyword
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
keyword.hashCode()
|
keyword.hashCode()
|
||||||
|
@@ -7,6 +7,8 @@ abstract class Matcher {
|
|||||||
|
|
||||||
protected abstract boolean match(String []searchTerms);
|
protected abstract boolean match(String []searchTerms);
|
||||||
|
|
||||||
|
public abstract String getTerm();
|
||||||
|
|
||||||
public void process(QueryEvent qe) {
|
public void process(QueryEvent qe) {
|
||||||
def terms = qe.searchEvent.searchTerms
|
def terms = qe.searchEvent.searchTerms
|
||||||
if (match(terms)) {
|
if (match(terms)) {
|
||||||
|
@@ -15,6 +15,11 @@ class RegexMatcher extends Matcher {
|
|||||||
return pattern.matcher(combined).find()
|
return pattern.matcher(combined).find()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getTerm() {
|
||||||
|
pattern.pattern()
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
pattern.hashCode()
|
pattern.hashCode()
|
||||||
|
@@ -12,7 +12,21 @@ class ContentPanelController {
|
|||||||
ContentPanelModel model
|
ContentPanelModel model
|
||||||
|
|
||||||
@ControllerAction
|
@ControllerAction
|
||||||
void click() {
|
void addRule() {
|
||||||
model.clickCount++
|
}
|
||||||
|
|
||||||
|
@ControllerAction
|
||||||
|
void deleteRule() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ControllerAction
|
||||||
|
void keyword() {
|
||||||
|
model.regex = false
|
||||||
|
}
|
||||||
|
|
||||||
|
@ControllerAction
|
||||||
|
void regex() {
|
||||||
|
model.regex = true
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,10 +1,30 @@
|
|||||||
package com.muwire.gui
|
package com.muwire.gui
|
||||||
|
|
||||||
|
import com.muwire.core.content.ContentManager
|
||||||
|
|
||||||
import griffon.core.artifact.GriffonModel
|
import griffon.core.artifact.GriffonModel
|
||||||
import griffon.transform.Observable
|
import griffon.transform.Observable
|
||||||
import griffon.metadata.ArtifactProviderFor
|
import griffon.metadata.ArtifactProviderFor
|
||||||
|
|
||||||
@ArtifactProviderFor(GriffonModel)
|
@ArtifactProviderFor(GriffonModel)
|
||||||
class ContentPanelModel {
|
class ContentPanelModel {
|
||||||
@Observable int clickCount = 0
|
|
||||||
|
private ContentManager contentManager
|
||||||
|
|
||||||
|
def rules = []
|
||||||
|
def hits = []
|
||||||
|
|
||||||
|
@Observable boolean regex
|
||||||
|
|
||||||
|
void mvcGroupInit(Map<String,String> args) {
|
||||||
|
contentManager = application.context.get("core").contentManager
|
||||||
|
refresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
void refresh() {
|
||||||
|
rules.clear()
|
||||||
|
rules.addAll(contentManager.matchers)
|
||||||
|
hits.clear()
|
||||||
|
// TODO: fire table data changed event
|
||||||
|
}
|
||||||
}
|
}
|
@@ -7,6 +7,9 @@ import griffon.metadata.ArtifactProviderFor
|
|||||||
import javax.swing.JDialog
|
import javax.swing.JDialog
|
||||||
import javax.swing.SwingConstants
|
import javax.swing.SwingConstants
|
||||||
|
|
||||||
|
import com.muwire.core.content.RegexMatcher
|
||||||
|
|
||||||
|
import java.awt.BorderLayout
|
||||||
import java.awt.event.WindowAdapter
|
import java.awt.event.WindowAdapter
|
||||||
import java.awt.event.WindowEvent
|
import java.awt.event.WindowEvent
|
||||||
|
|
||||||
@@ -23,12 +26,38 @@ class ContentPanelView {
|
|||||||
def mainFrame
|
def mainFrame
|
||||||
def mainPanel
|
def mainPanel
|
||||||
|
|
||||||
|
def rulesTable
|
||||||
|
def ruleTextField
|
||||||
|
|
||||||
void initUI() {
|
void initUI() {
|
||||||
mainFrame = application.windowManager.findWindow("main-frame")
|
mainFrame = application.windowManager.findWindow("main-frame")
|
||||||
dialog = new JDialog(mainFrame, "Content Control Panel", true)
|
dialog = new JDialog(mainFrame, "Content Control Panel", true)
|
||||||
|
|
||||||
mainPanel = builder.panel {
|
mainPanel = builder.panel {
|
||||||
label("Stuff goes here")
|
gridLayout(rows:2, cols:1)
|
||||||
|
panel {
|
||||||
|
borderLayout()
|
||||||
|
scrollPane (constraints : BorderLayout.CENTER) {
|
||||||
|
rulesTable = table(id : "rules-table", autoCreateRowSorter : true) {
|
||||||
|
tableModel(list : model.rules) {
|
||||||
|
closureColumn(header: "Term", type:String, read: {row -> row.getTerm()})
|
||||||
|
closureColumn(header: "Regex?", type:Boolean, read: {row -> row instanceof RegexMatcher})
|
||||||
|
closureColumn(header: "Hits", type:Integer, read : {row -> row.matches.size()})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panel (constraints : BorderLayout.SOUTH) {
|
||||||
|
ruleTextField = textField(action: addRuleAction)
|
||||||
|
buttonGroup(id : "ruleType")
|
||||||
|
radioButton(text: "Keyword", selected : true, buttonGroup: ruleType, keywordAction)
|
||||||
|
radioButton(text: "Regex", selected : false, buttonGroup: ruleType, regexAction)
|
||||||
|
button(text : "Add Rule", addRuleAction)
|
||||||
|
button(text : "Delete Rule", deleteRuleAction) // TODO: enable/disable
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panel {
|
||||||
|
// TODO: hits table
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user