
gdt.jgui.entity.bonddetail.JBondDetailPanel Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of Graph Show documentation
Show all versions of Graph Show documentation
The graph extension for the entigrator application
The newest version!
package gdt.jgui.entity.bonddetail;
/*
* Copyright 2016 Alexander Imas
* This file is extension of JEntigrator.
JEntigrator is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
JEntigrator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with JEntigrator. If not, see .
*/
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Properties;
import java.util.logging.Logger;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.event.MenuEvent;
import javax.swing.event.MenuListener;
import org.apache.commons.codec.binary.Base64;
import gdt.data.entity.BaseHandler;
import gdt.data.entity.BondDetailHandler;
import gdt.data.entity.EntityHandler;
import gdt.data.entity.facet.ExtensionHandler;
import gdt.data.grain.Core;
import gdt.data.grain.Locator;
import gdt.data.grain.Sack;
import gdt.data.store.Entigrator;
import gdt.jgui.console.JConsoleHandler;
import gdt.jgui.console.JContext;
import gdt.jgui.console.JFacetRenderer;
import gdt.jgui.console.JItemPanel;
import gdt.jgui.console.JMainConsole;
import gdt.jgui.entity.JEntitiesPanel;
import gdt.jgui.entity.edge.JBondsPanel;
/**
* This context displays a list of details for the selected edge.
* @author imasa
*/
public class JBondDetailPanel extends JEntitiesPanel {
private static final long serialVersionUID = 1L;
private Logger LOGGER=Logger.getLogger(JBondDetailPanel.class.getName());
protected String entihome$;
protected String entityKey$;
protected String bondKey$;
protected String edgeKey$;
protected String hostType$;
protected String subtitle$;
protected JMenuItem addItem;
protected String requesterResponseLocator$;
Hashtable items;
protected JMenu menu1;
String message$;
Sack entity;
boolean debug=false;
/**
* Get the context locator.
* @return the context locator.
*/
@Override
public String getLocator() {
Properties locator=new Properties();
locator.setProperty(Locator.LOCATOR_TYPE, JContext.CONTEXT_TYPE);
locator.setProperty(JContext.CONTEXT_TYPE,getType());
if(entihome$!=null&&console!=null){
locator.setProperty(Entigrator.ENTIHOME,entihome$);
// Entigrator entigrator=console.getEntigrator(entihome$);
// String icon$=ExtensionHandler.loadIcon(entigrator, BondDetailHandler.EXTENSION_KEY, "detail.png");
// if(icon$!=null)
// locator.setProperty(Locator.LOCATOR_ICON,icon$);
}
locator.setProperty( Locator.LOCATOR_ICON_CONTAINER, Locator.LOCATOR_ICON_CONTAINER_CLASS);
locator.setProperty( Locator.LOCATOR_ICON_CLASS, getClass().getName());
locator.setProperty( Locator.LOCATOR_ICON_FILE, "detail.png");
locator.setProperty( Locator.LOCATOR_ICON_CLASS_LOCATION,BondDetailHandler.EXTENSION_KEY);
if(entityKey$!=null)
locator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
locator.setProperty(Locator.LOCATOR_TITLE, getTitle());
locator.setProperty(BaseHandler.HANDLER_SCOPE,JConsoleHandler.CONSOLE_SCOPE);
locator.setProperty(BaseHandler.HANDLER_CLASS,JBondDetailPanel.class.getName());
locator.setProperty(BaseHandler.HANDLER_LOCATION,BondDetailHandler.EXTENSION_KEY);
if(bondKey$!=null)
locator.setProperty(JBondsPanel.BOND_KEY,bondKey$);
// if(hostType$!=null)
// locator.setProperty(HOST_TYPE,hostType$);
return Locator.toString(locator);
}
/**
* Get title of the handler.
* @return the title of the handler..
*/
@Override
public String getTitle() {
if(message$==null)
return "Bond details";
else
return "Bond details"+message$;
}
/**
* Get subtitle of the handler.
* @return the subtitle of the handler..
*/
@Override
public String getSubtitle() {
return subtitle$;
}
/**
* Get type of the handler.
* @return the type of the handler..
*/
@Override
public String getType() {
return "bond details";
}
/**
* Close context.
*
*/
@Override
public void close() {
}
/**
* Create a new facet renderer.
* @param console the main console.
* @param locator$ the locator string.
* @return the fields editor.
*/
@Override
public JContext instantiate(JMainConsole console, String locator$) {
try{
if(debug)
System.out.println("JBondDetailPanel:instantiate:locator="+locator$);
this.console=console;
this.locator$=locator$;
Properties locator=Locator.toProperties(locator$);
entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
entihome$=locator.getProperty(Entigrator.ENTIHOME);
bondKey$=locator.getProperty(JBondsPanel.BOND_KEY);
edgeKey$=locator.getProperty(JBondsPanel.EDGE_KEY);
Entigrator entigrator=console.getEntigrator(entihome$);
if(Locator.LOCATOR_TRUE.equals(locator.getProperty(JFacetRenderer.ONLY_ITEM)))
return this;
entity=null;
if(edgeKey$!=null)
entity =entigrator.getEntityAtKey(edgeKey$);
else{
Sack host= entigrator.getEntityAtKey(entityKey$);
if("edge".equals(host.getProperty("entity")))
entity=host;
}
if(debug)
System.out.println("JBondDetailPanel:instantiate:edge key="+edgeKey$);
if(entity==null)
return this;
Core[] ca=entity.elementGet("detail");
if(ca==null)
return this;
Core bond=entity.getElementItem("bond", bondKey$);
subtitle$=entigrator.indx_getLabel(bond.type)+" --("+entity.getProperty("label")+")-> "+entigrator.indx_getLabel(bond.value);
saveSelection( console, entihome$, edgeKey$, bondKey$);
// entigrator.getEntityAtKey(entityKey$);
if(debug)
System.out.println("JBondDetailPanel:instantiate:found bond="+bondKey$);
ArrayListsl=new ArrayList();
String label$;
for(Core c:ca)
if(bondKey$.equals(c.type)){
label$=entigrator.indx_getLabel(c.value);
if(label$!=null)
sl.add(label$);
}
if(sl.size()>0){
Collections.sort(sl);
String list$=Locator.toString(sl.toArray(new String[0]));
locator$=Locator.append(locator$, EntityHandler.ENTITY_LIST, list$);
}
super.instantiate(console, locator$);
if(debug)
System.out.println("JBondDetailPanel:instantiate:1");
JItemPanel[] ipa=getItems();
if(debug)
System.out.println("JBondDetailPanel:instantiate:2");
if(ipa!=null){
String ip$;
for(JItemPanel ip:ipa){
ip$=ip.getLocator();
ip$=Locator.append(ip$, JBondsPanel.EDGE_KEY, edgeKey$);
ip$=Locator.append(ip$, JBondsPanel.BOND_KEY, bondKey$);
ip.setLocator(ip$);
}
putItems(ipa);
}
}catch(Exception e){
Logger.getLogger(getClass().getName()).info(e.toString());
}
return this;
}
/**
* Get the context menu.
* @return the context menu.
*/
@Override
public JMenu getContextMenu() {
menu1 =new JMenu("Context");
menu1.addMenuListener(new MenuListener(){
@Override
public void menuSelected(MenuEvent e) {
// System.out.println("JBondDetailPanel:getConextMenu:BEGIN");
menu1.removeAll();
JMenuItem selectItem = new JMenuItem("Select all");
selectItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JItemPanel[] ipa=getItems();
if(ipa!=null){
for(JItemPanel ip:ipa)
ip.setChecked(true);
}
}
} );
menu1.add(selectItem);
JMenuItem unselectItem = new JMenuItem("Unselect all");
unselectItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JItemPanel[] ipa=getItems();
if(ipa!=null){
for(JItemPanel ip:ipa)
ip.setChecked(false);
}
}
} );
menu1.addSeparator();
JMenuItem doneItem = new JMenuItem("Done");
doneItem.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
if(requesterResponseLocator$!=null){
try{
byte[] ba=Base64.decodeBase64(requesterResponseLocator$);
String responseLocator$=new String(ba,"UTF-8");
JConsoleHandler.execute(console, responseLocator$);
}catch(Exception ee){
LOGGER.severe(ee.toString());
}
}else
console.back();
}
});
menu1.add(doneItem);
menu1.addSeparator();
addItem = new JMenuItem("Add");
addItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
Entigrator entigrator=console.getEntigrator(entihome$);
JContext adp=(JContext)ExtensionHandler.loadHandlerInstance(entigrator,BondDetailHandler.EXTENSION_KEY ,"gdt.jgui.entity.bonddetail.JAddDetailPanel" );
String adpLocator$=adp.getLocator();
adpLocator$=Locator.append(adpLocator$, Entigrator.ENTIHOME, entihome$);
adpLocator$=Locator.append(adpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
JConsoleHandler.execute(console, adpLocator$);
}catch(Exception ee){
LOGGER.severe(ee.toString());
}
}
} );
menu1.add(addItem);
if(hasToPaste()){
JMenuItem pasteItem = new JMenuItem("Paste");
pasteItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
paste();
}
} );
menu1.add(pasteItem);
}
if(hasSelectedItems()){
JMenuItem deleteItem = new JMenuItem("Delete");
deleteItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int response = JOptionPane.showConfirmDialog(console.getContentPanel(), "Delete ?", "Confirm",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (response == JOptionPane.YES_OPTION){
delete();
JBondDetailPanel bdp=new JBondDetailPanel();
String bdpLocator$=bdp.getLocator();
bdpLocator$=Locator.append(bdpLocator$, Entigrator.ENTIHOME,entihome$);
bdpLocator$=Locator.append(bdpLocator$, EntityHandler.ENTITY_KEY,entityKey$);
bdpLocator$=Locator.append(bdpLocator$, JBondsPanel.BOND_KEY,bondKey$);
JConsoleHandler.execute(console, bdpLocator$);
}
}
} );
menu1.add(deleteItem);
}
}
@Override
public void menuDeselected(MenuEvent e) {
}
@Override
public void menuCanceled(MenuEvent e) {
}
});
return menu1;
}
private void paste(){
try{
// System.out.println("JBondDetailPanel:paste:BEGIN");
String[] sa=console.clipboard.getContent();
if(sa==null){
System.out.println("JBondDetailPanel:paste:empty clipboard");
return;
}
// System.out.println("JBondDetailPanel:paste:sa="+sa.length);
Entigrator entigrator=console.getEntigrator(entihome$);
for(String s:sa){
s=Locator.append(s, JBondsPanel.EDGE_KEY, edgeKey$);
s=Locator.append(s, JBondsPanel.BOND_KEY, bondKey$);
BondDetailHandler.addDetail(entigrator, s);
}
JBondDetailPanel dp=new JBondDetailPanel();
String adpLocator$=dp.getLocator();
adpLocator$=Locator.append(adpLocator$, Entigrator.ENTIHOME, entihome$);
adpLocator$=Locator.append(adpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
adpLocator$=Locator.append(adpLocator$,JBondsPanel.BOND_KEY , bondKey$);
adpLocator$=Locator.append(adpLocator$,JBondsPanel.EDGE_KEY , edgeKey$);
JConsoleHandler.execute(console, adpLocator$);
}catch(Exception ee){
LOGGER.severe(ee.toString());
}
}
private boolean hasToPaste(){
try{
String[] sa=console.clipboard.getContent();
if(sa==null||sa.length<1)
return false;
Properties clipLocator;
for(String s:sa){
//System.out.println("JBondDetailPanel:hasToPaste:s="+s);
clipLocator=Locator.toProperties(s);
if(clipLocator.getProperty(EntityHandler.ENTITY_KEY)!=null)
return true;
}
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
return false;
}
private void delete(){
try{
String[]sa=listSelectedItems();
if(sa==null||sa.length<1)
return ;
Entigrator entigrator=console.getEntigrator(entihome$);
for(String s:sa){
BondDetailHandler.deleteDetail(entigrator, s);
}
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
private static void saveSelection(JMainConsole console, String entihome$, String edgeKey$,String bondKey$){
try{
if(bondKey$==null)
return;
Entigrator entigrator=console.getEntigrator(entihome$);
Sack edge=entigrator.getEntityAtKey(edgeKey$);
if(!edge.existsElement("parameter"))
edge.createElement("parameter");
edge.putElementItem("parameter", new Core(null,JBondsPanel.BOND_KEY,bondKey$));
entigrator.save(edge);
}catch(Exception e){
System.out.println("JBondsPanel:saveSelectedBond:"+e.toString());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy