📄 imbeeapplicationpanel.java
字号:
importObjects();
} else if (e.getActionCommand().equals("newObject")) {
String[] options = {"SemanticTime", "SemanticPlace", "Object"};
JComboBox cbox = new JComboBox(options);
JOptionPane.showMessageDialog(this, cbox, "Select Type", JOptionPane.PLAIN_MESSAGE);
NewDescriptorDialogInterface descDialog = null;
if (cbox.getSelectedIndex() == 0) {
descDialog = new NewTimeDialog(parent);
} else if (cbox.getSelectedIndex() == 1) {
descDialog = new NewPlaceDialog(parent);
} else if (cbox.getSelectedIndex() == 2) {
descDialog = new NewObjectDialog(parent);
}
JDialog dialog = ((JDialog) descDialog);
dialog.setSize(460, 230);
Dimension ss = Toolkit.getDefaultToolkit().getScreenSize();
dialog.setLocation((ss.width - dialog.getWidth()) >> 1, (ss.height - dialog.getHeight()) >> 1);
dialog.setVisible(true);
if (descDialog.createXML() != null) {
venueTableModel.addObject(descDialog.createXML());
venueTableModel.sort();
venueTableModel.fireTableDataChanged();
}
}
}
/**
* Exportiert 黚ergebenes <code>org.jdom.Document</code> in eine Datei nachdem die Datei 黚er einen
* <code>JFileChooser</code> ausgew鋒lt wurde. Geschrieben wird im Encoding UTF-8.
*
* @param data Dokument, das in eine Datei geschrieben wird.
*/
private void exportXMLData(Document data) {
try {
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
String strData = outputter.outputString(data);
JFileChooser jfc = new JFileChooser(".");
int returnVal = jfc.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
FileOutputStream fout = new FileOutputStream(jfc.getSelectedFile());
OutputStreamWriter stream_out = new OutputStreamWriter(fout, "UTF-8");
stream_out.write(strData);
stream_out.flush();
stream_out.close();
debug("wrote mpeg-7 document in File: " + jfc.getSelectedFile());
}
} catch (IOException e) {
debug("Error writing mpeg-7 document to file");
e.printStackTrace();
}
}
public Vector getAgents() {
return agentTableModel.getAgents();
}
public Vector getEvents() {
return eventTableModel.getEvents();
}
public Vector getVenues() {
return venueTableModel.getObjects();
}
public Vector getPossibleObjects() {
Vector ret = new Vector();
ret.addAll(agentTableModel.getAgents());
ret.addAll(eventTableModel.getEvents());
ret.addAll(venueTableModel.getObjects());
return ret;
}
public Document getSemanticsDocument() {
return beePanel.createDocument();
}
public void importAgents() {
File f = getFile(".", new Mpeg7FileFilter());
if (f != null) {
agentTableModel.addAllAgents(retrieveNodes(f, "AgentObjectType"));
agentTableModel.addAllAgents(retrieveNodes(f, "fsw:FSWPlayerType"));
agentTableModel.addAllAgents(retrieveNodes(f, "fsw:FSWCoachType"));
agentTableModel.addAllAgents(retrieveNodes(f, "fsw:FSWRefereeType"));
agentTableModel.detachAll();
agentTableModel.sort();
agentTableModel.fireTableDataChanged();
}
}
public void importEvents() {
File f = getFile(".", new Mpeg7FileFilter());
if (f != null) {
eventTableModel.addAllEvents(retrieveNodes(f, "EventType"));
eventTableModel.detachAll();
eventTableModel.sort();
eventTableModel.fireTableDataChanged();
}
}
public void importObjects() {
File f = getFile(".", new Mpeg7FileFilter());
if (f != null) {
venueTableModel.addAllObjects(retrieveNodes(f, "SemanticPlaceType"));
venueTableModel.addAllObjects(retrieveNodes(f, "ObjectType"));
venueTableModel.addAllObjects(retrieveNodes(f, "SemanticTimeType"));
venueTableModel.detachAll();
venueTableModel.sort();
venueTableModel.fireTableDataChanged();
}
}
private Vector retrieveNodes(File f, String type) {
Vector v = new Vector();
SAXBuilder builder = new SAXBuilder();
try {
Document agents = builder.build(f);
Namespace mpeg7 = agents.getRootElement().getNamespace();
Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
java.util.List nodeList = agents.getRootElement().getChild("Description", mpeg7).getChild("Semantics", mpeg7).getChildren("SemanticBase", mpeg7);
for (Iterator i = nodeList.iterator(); i.hasNext();) {
Element e = (Element) i.next();
if (e.getAttributeValue("type", xsi).equals(type))
v.add(e);
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return v;
}
private File getFile(String directory, javax.swing.filechooser.FileFilter filter) {
File myFile = null;
JFileChooser jfc = new JFileChooser(directory);
jfc.setFileFilter(filter);
if (jfc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
myFile = jfc.getSelectedFile();
}
return myFile;
}
public void addAgents(Vector v) {
agentTableModel.addAllAgents(v);
agentTableModel.sort();
agentTableModel.fireTableDataChanged();
}
public void addEvents(Vector v) {
eventTableModel.addAllEvents(v);
eventTableModel.sort();
eventTableModel.fireTableDataChanged();
}
private JPopupMenu generateVenueMenu() {
JPopupMenu menu = new JPopupMenu("Venues");
Namespace mpeg7 = null;
Vector venues = venueTableModel.getObjects();
for (Iterator i = venues.iterator(); i.hasNext();) {
Element e = (Element) i.next();
String label = e.getChild("Label", e.getNamespace()).getChildTextTrim("Name", e.getNamespace());
JMenuItem item = new JMenuItem(label);
item.setActionCommand("addVenue-" + label);
item.addActionListener(beePanel);
menu.add(item);
}
return menu;
}
private void readBaseObjects() {
try {
Document d = xmlBuilder.build(BASE_OBJECT_FILE);
if (d != null) {
Element e = d.getRootElement();
Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Namespace mpeg7 = e.getNamespace();
Namespace fsw = OCToolkit.getFSWNamespace();
java.util.List latt = e.getAttributes();
for (Iterator it = latt.iterator(); it.hasNext();) {
Attribute attribute = (Attribute) it.next();
if (attribute.getNamespacePrefix().equals("xsi"))
xsi = attribute.getNamespace();
}
if (!(e != null)) {
debug("Error loading agents from file: root element is NULL");
}
e = e.getChild("Description", mpeg7);
e = e.getChild("Semantics", mpeg7);
java.util.List l = e.getChildren();
for (Iterator it = l.iterator(); it.hasNext();) {
Element tmpElement = (Element) it.next();
if (tmpElement.getName().equals("SemanticBase") && tmpElement.getAttributeValue("type", xsi) != null) {
if (tmpElement.getAttributeValue("type", xsi).equals("AgentObjectType") || tmpElement.getAttributeValue("type", xsi).equals("fsw:FSWRefereeType")) {
agentTableModel.addAgent(tmpElement);
} else if (tmpElement.getAttributeValue("type", xsi).equals("SemanticPlaceType") || tmpElement.getAttributeValue("type", xsi).equals("ObjectType") || tmpElement.getAttributeValue("type", xsi).equals("SemanticTimeType")) {
venueTableModel.addObject(tmpElement);
} else if (tmpElement.getAttributeValue("type", xsi).equals("EventType")) {
eventTableModel.addEvent(tmpElement);
}
} else {
// logger.debug(tmpElement + " has no matching attribute!");
}
}
} else {
debug("Error loading agents from file: File not found");
}
} catch (Exception e1) {
debug("Error loading agents from file: " + e1);
e1.printStackTrace();
}
}
public void saveCatalog() {
try {
Document d = xmlBuilder.build(BASE_OBJECT_FILE);
Element semantics = d.getRootElement();
Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Namespace mpeg7 = semantics.getNamespace();
semantics = semantics.getChild("Description", mpeg7).getChild("Semantics", mpeg7);
semantics.removeContent();
semantics.addContent(new Element("Label", mpeg7).addContent(new Element("Name", mpeg7).addContent("Semanitscher Katalog")));
for (Iterator iterator = agentTableModel.getAgents().iterator(); iterator.hasNext();) {
Element elem = (Element) iterator.next();
if (elem.getParent() != null) elem = (Element) elem.clone();
semantics.addContent(elem.detach());
}
for (Iterator iterator = eventTableModel.getEvents().iterator(); iterator.hasNext();) {
Element elem = (Element) iterator.next();
if (elem.getParent() != null) elem = (Element) elem.clone();
semantics.addContent(elem.detach());
}
for (Iterator iterator = venueTableModel.getObjects().iterator(); iterator.hasNext();) {
Element elem = (Element) iterator.next();
if (elem.getParent() != null) elem = (Element) elem.clone();
semantics.addContent(elem.detach());
}
FileOutputStream fos = new FileOutputStream(BASE_OBJECT_FILE);
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf-8");
new XMLOutputter(Format.getPrettyFormat()).output(d, osw);
osw.close();
fos.close();
} catch (JDOMException e) {
debug("JDOMException saving catalogue: " + e.getMessage());
} catch (IOException e) {
debug("IOException saving catalogue: " + e.getMessage());
}
}
private void debug(String message) {
if (AnnotationFrame.DEBUG)
System.out.println("[IMBeeApplikationPanel] " + message);
}
public String[] getRelations() {
return relationsArray;
}
public void setSemantics(Element node) {
Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Namespace mpeg7 = node.getNamespace();
java.util.List l = node.getChildren();
for (Iterator it = l.iterator(); it.hasNext();) {
Element tmpElement = (Element) it.next();
if (tmpElement.getName().equals("SemanticBase") && tmpElement.getAttributeValue("type", xsi) != null) {
if (tmpElement.getAttributeValue("type", xsi).equals("AgentObjectType") || tmpElement.getAttributeValue("type", xsi).equals("fsw:FSWRefereeType")) {
agentTableModel.addAgent(tmpElement);
} else if (tmpElement.getAttributeValue("type", xsi).equals("SemanticPlaceType") ||
tmpElement.getAttributeValue("type", xsi).equals("ObjectType") ||
tmpElement.getAttributeValue("type", xsi).equals("SemanticTimeType")) {
venueTableModel.addObject(tmpElement);
} else if (tmpElement.getAttributeValue("type", xsi).equals("EventType")) {
eventTableModel.addEvent(tmpElement);
}
}
}
beePanel.importNode(node);
agentTableModel.detachAll();
eventTableModel.detachAll();
venueTableModel.detachAll();
agentTableModel.sort();
eventTableModel.sort();
venueTableModel.sort();
agentTableModel.fireTableDataChanged();
eventTableModel.fireTableDataChanged();
venueTableModel.fireTableDataChanged();
}
public void addVenues(Vector v) {
venueTableModel.addAllObjects(v);
venueTableModel.sort();
venueTableModel.fireTableDataChanged();
}
public void reArrange() {
rlSplitPane.setDividerLocation(0.75);
tbSplitPane.setDividerLocation(0.7);
agentEventSplit.setDividerLocation(0.6);
}
public String[] getSemanticAgentsNames() {
return beePanel.getSemanticAgentsNames();
}
public String[] getSemanticEventsNames() {
return beePanel.getSemanticEventsNames();
}
public String[] getSemanticPlacesNames() {
return beePanel.getSemanticPlacesNames();
}
public String[] getSemanticTimesNames() {
return beePanel.getSemanticTimesNames();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -