gdt.jgui.entity.fields.JFieldsFacetOpenItem Maven / Gradle / Ivy
package gdt.jgui.entity.fields;
/*
* Copyright 2016 Alexander Imas
* This file is part 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.Properties;
import java.util.logging.Logger;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.tree.DefaultMutableTreeNode;
import org.apache.commons.codec.binary.Base64;
import gdt.data.entity.BaseHandler;
import gdt.data.entity.EntityHandler;
import gdt.data.entity.FacetHandler;
import gdt.data.entity.facet.FieldsHandler;
import gdt.data.grain.Core;
import gdt.data.grain.Locator;
import gdt.data.grain.Sack;
import gdt.data.grain.Support;
import gdt.data.store.Entigrator;
import gdt.jgui.base.JBaseNavigator;
import gdt.jgui.base.JBasesPanel;
import gdt.jgui.console.JConsoleHandler;
import gdt.jgui.console.JContext;
import gdt.jgui.console.JFacetOpenItem;
import gdt.jgui.console.JMainConsole;
import gdt.jgui.console.JRequester;
import gdt.jgui.console.WContext;
import gdt.jgui.console.WUtils;
import gdt.jgui.entity.JEntitiesPanel;
import gdt.jgui.entity.JEntityDigestDisplay;
import gdt.jgui.entity.JEntityFacetPanel;
import gdt.jgui.tool.JTextEditor;
/**
* This class represents the fields facet item in the list
* of entity's facets.
* @author imasa
*
*/
public class JFieldsFacetOpenItem extends JFacetOpenItem implements JRequester,WContext{
private static final long serialVersionUID = 1L;
public static final String LOCATOR_TYPE_FIELD_NAME = "locator type field name";
public static final String LOCATOR_TYPE_FIELD_VALUE = "locator type field value";
public static final String FIELD_NAME = "field name";
public static final String FIELD_VALUE = "field value";
public static final String NODE_TYPE_FIELD_NAME = "node type field name";
public static final String NODE_TYPE_FIELD_VALUE = "node type field value";
public static final String ACTION_DISPLAY_FACETS="action display facets";
public static final String FIELDS_FACET = "fields facet";
private Logger LOGGER=Logger.getLogger(JFieldsFacetOpenItem.class.getName());
boolean debug=false;
/**
* The default constructor.
*
*/
public JFieldsFacetOpenItem(){
super();
}
/**
* Get the context locator.
* @return the context locator.
*/
@Override
public String getLocator(){
Properties locator=new Properties();
locator.setProperty(Locator.LOCATOR_TITLE,"Fields");
locator.setProperty(BaseHandler.HANDLER_CLASS,JFieldsFacetOpenItem.class.getName());
locator.setProperty(BaseHandler.HANDLER_SCOPE,JConsoleHandler.CONSOLE_SCOPE);
locator.setProperty(BaseHandler.HANDLER_METHOD,METHOD_OPEN_FACET);
locator.setProperty( JContext.CONTEXT_TYPE,"Fields facet");
locator.setProperty(Locator.LOCATOR_TITLE,"Fields");
locator.setProperty(FACET_HANDLER_CLASS,FieldsHandler.class.getName());
if(entityKey$!=null)
locator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
if(entihome$!=null)
locator.setProperty(Entigrator.ENTIHOME,entihome$);
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,"fields.png");
if(entihome$!=null){
locator.setProperty(Locator.LOCATOR_CHECKABLE,Locator.LOCATOR_TRUE);
}
return Locator.toString(locator);
}
/**
* Execute the response locator.
* @param console the main console.
* @param locator$ the response locator.
*/
@Override
public void response(JMainConsole console, String locator$) {
// System.out.println("JFieldsFacetOpenItem:response:FACET locator:"+locator$);
try{
Properties locator=Locator.toProperties(locator$);
String requesterAction$=locator.getProperty(JRequester.REQUESTER_ACTION);
String text$=locator.getProperty(JTextEditor.TEXT);
String requesterResponseLocator$=locator.getProperty(JRequester.REQUESTER_RESPONSE_LOCATOR);
byte[] ba=Base64.decodeBase64(requesterResponseLocator$);
String responseLocator$=new String(ba,"UTF-8");
// System.out.println("JFieldsFacetItem:response:response locator="+responseLocator$);
locator=Locator.toProperties(responseLocator$);
entihome$=locator.getProperty(Entigrator.ENTIHOME);
entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
if(ACTION_DIGEST_CALL.equals(requesterAction$)){
String encodedSelection$=locator.getProperty(JEntityDigestDisplay.SELECTION);
ba=Base64.decodeBase64(encodedSelection$);
String selection$=new String(ba,"UTF-8");
locator=Locator.toProperties(selection$);
String fieldName$=locator.getProperty(FIELD_NAME);
if(debug)
System.out.println("JFieldsFacetOpenItem:response:SELECTION locator="+selection$);
Entigrator entigrator=console.getEntigrator(entihome$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
Core field=entity.getElementItem("field", fieldName$);
if(field!=null&&text$!=null&&text$.length()>1){
entity.removeElementItem("field", fieldName$);
String selectionType$=locator.getProperty(Locator.LOCATOR_TYPE);
if(FIELD_NAME.equals(selectionType$))
field.name=text$;
if(FIELD_VALUE.equals(selectionType$))
field.value=text$;
entity.putElementItem("field", field);
entigrator.ent_alter(entity);
}
JEntityDigestDisplay edd=new JEntityDigestDisplay();
String eddLocator$=edd.getLocator();
eddLocator$=Locator.append(eddLocator$, Entigrator.ENTIHOME, entihome$);
eddLocator$=Locator.append(eddLocator$, EntityHandler.ENTITY_KEY, Locator.getProperty(responseLocator$,JEntityDigestDisplay.ROOT_ENTITY_KEY ));
eddLocator$=Locator.append(eddLocator$, JEntityDigestDisplay.SELECTION, Locator.getProperty(responseLocator$,JEntityDigestDisplay.SELECTION ));
JConsoleHandler.execute(console, eddLocator$);
return;
}
entihome$=locator.getProperty(Entigrator.ENTIHOME);
entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
JEntityFacetPanel efp=new JEntityFacetPanel();
String efpLocator$=efp.getLocator();
efpLocator$=Locator.append(efpLocator$, Entigrator.ENTIHOME, entihome$);
efpLocator$=Locator.append(efpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
JConsoleHandler.execute(console, efpLocator$);
}catch(Exception e){
LOGGER.severe(e.toString());
}
}
/**
* Check if the facet can be removed from the entity.
* @return true if can be removed false otherwise.
*/
@Override
public boolean isRemovable() {
try{
entihome$=Locator.getProperty(locator$, Entigrator.ENTIHOME);
entityKey$=Locator.getProperty(locator$,EntityHandler.ENTITY_KEY);
if(debug)
System.out.println("JFieldsfacetOpenItem:isRemovable:entihome="+entihome$+" entity key="+entityKey$);
Entigrator entigrator=console.getEntigrator(entihome$);
Sack entity =entigrator.getEntityAtKey(entityKey$);
if("fields".equals(entity.getProperty("entity")))
return false;
return true;
}catch(Exception e){
LOGGER.severe(e.toString());
return false;
}
}
/**
* Get the facet name.
* @return the facet name.
*/
@Override
public String getFacetName() {
return "Fields";
}
/**
* Get the facet icon as a Base64 string.
* @return the facet icon string.
*/
@Override
public String getFacetIcon(Entigrator entigrator) {
return Support.readHandlerIcon(null,JFieldsFacetOpenItem.class, "fields.png");
}
/**
* Remove the facet from the entity.
*/
@Override
public void removeFacet() {
try{
Entigrator entigrator=console.getEntigrator(entihome$);
Sack entity =entigrator.getEntityAtKey(entityKey$);
if("fields".equals(entity.getProperty("entity")))
return ;
entity.removeElement("field");
entity.removeElementItem("fhandler", FieldsHandler.class.getName());
entity.removeElementItem("jfacet", FieldsHandler.class.getName());
entigrator.ent_alter(entity);
entigrator.ent_takeOffProperty(entity, "fields");
}catch(Exception e){
LOGGER.severe(e.toString());
}
}
/**
* Display the facet console.
* @param console the main console.
* @param locator$ the locator string.
*/
@Override
public void openFacet(JMainConsole console,String locator$) {
try{
// System.out.println("JFieldsFacetOpenItem:openFacet:locator="+locator$);
Properties locator=Locator.toProperties(locator$);
String entihome$=locator.getProperty(Entigrator.ENTIHOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
String responseLocator$=getLocator();
Properties responseLocator=Locator.toProperties(responseLocator$);
responseLocator.setProperty(Entigrator.ENTIHOME, entihome$);
responseLocator.setProperty(EntityHandler.ENTITY_KEY, entityKey$);
responseLocator.setProperty(BaseHandler.HANDLER_METHOD, JFacetOpenItem.METHOD_RESPONSE);
//
JEntityFacetPanel efp=new JEntityFacetPanel();
String efpLocator$=efp.getLocator();
efpLocator$=Locator.append(efpLocator$, Entigrator.ENTIHOME, entihome$);
efpLocator$=Locator.append(efpLocator$, EntityHandler.ENTITY_KEY, entityKey$);
efpLocator$=Locator.append(efpLocator$, JRequester.REQUESTER_ACTION, ACTION_DISPLAY_FACETS);
responseLocator.setProperty(JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(efpLocator$));
//
responseLocator$=Locator.toString(responseLocator);
String requesterResponseLocator$=Locator.compressText(responseLocator$);
JFieldsEditor fieldsEditor=new JFieldsEditor();
String feLocator$=fieldsEditor.getLocator();
feLocator$=Locator.append(feLocator$, Entigrator.ENTIHOME, entihome$);
feLocator$=Locator.append(feLocator$, EntityHandler.ENTITY_KEY, entityKey$);
feLocator$=Locator.append(feLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, requesterResponseLocator$);
feLocator$=Locator.append(feLocator$, BaseHandler.HANDLER_METHOD,"instantiate");
JConsoleHandler.execute(console, feLocator$);
}catch(Exception e){
LOGGER.severe(e.toString());
}
}
/**
* Get the class name of the facet renderer.
* @return the JFieldsEditor class name .
*/
@Override
public String getFacetRenderer() {
return JFieldsEditor.class.getName();
}
/**
* Get children nodes of the facet node for the digest view.
* @return the children nodes of the facet node.
*/
@Override
public DefaultMutableTreeNode[] getDigest(Entigrator entigrator,String locator$) {
try{
if(debug)
System.out.println("JFieldsFacetOpenItem:getDigest:locator="+locator$);
Properties locator=Locator.toProperties(locator$);
entihome$=entigrator.getEntihome();
entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
Sack entity=entigrator.getEntityAtKey(entityKey$);
Core[]ca=entity.elementGet("field");
if(ca==null)
return null;
DefaultMutableTreeNode nameNode;
String nameLocator$;
if(debug)
System.out.println("JFieldsFacetOpenItem:getDigest:1");
ArrayListnl=new ArrayList();
for(Core aCa:ca){
nameNode=new DefaultMutableTreeNode();
nameLocator$=Locator.append(locator$, Locator.LOCATOR_TITLE,aCa.name+" : "+aCa.value);
nameLocator$=Locator.append(nameLocator$, Locator.LOCATOR_TYPE,FIELD_NAME);
nameLocator$=Locator.append(nameLocator$,FIELD_NAME,aCa.name);
//nameLocator$=Locator.append(nameLocator$,Locator.LOCATOR_ICON,nameIcon$);
nameLocator$=Locator.append(nameLocator$,Locator.LOCATOR_ICON_CONTAINER,Locator.LOCATOR_ICON_CONTAINER_CLASS);
nameLocator$=Locator.append(nameLocator$,Locator.LOCATOR_ICON_CLASS,JEntitiesPanel.class.getName());
nameLocator$=Locator.append(nameLocator$,Locator.LOCATOR_ICON_FILE,"text.png");
nameLocator$=Locator.append(nameLocator$,JEntityDigestDisplay.NODE_TYPE,NODE_TYPE_FIELD_NAME);
if(entihome$!=null)
nameLocator$=Locator.append(nameLocator$,Entigrator.ENTIHOME,entihome$);
nameLocator$=Locator.append(nameLocator$,JEntityDigestDisplay.NODE_TYPE,NODE_TYPE_FIELD_VALUE);
if(entityKey$!=null)
nameLocator$=Locator.append(nameLocator$,EntityHandler.ENTITY_KEY,entityKey$);
nameNode.setUserObject(nameLocator$);
nl.add(nameNode);
}
return nl.toArray(new DefaultMutableTreeNode[0]);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
return null;
}
/**
* Get the facet handler instance.
* @return the facet handler instance.
*/
@Override
public FacetHandler getFacetHandler() {
return new FieldsHandler();
}
/**
* Get the popup menu for the child node of the facet node
* in the digest view.
* @return the popup menu.
*/
@Override
public JPopupMenu getPopupMenu(final String digestLocator$) {
//System.out.println("JFieldsFacetOpenItem:getPopupMenu:digest locator="+Locator.remove(digestLocator$, Locator.LOCATOR_ICON));
JPopupMenu popup = new JPopupMenu();
JMenuItem editItem=new JMenuItem("Edit");
popup.add(editItem);
editItem.setHorizontalTextPosition(JMenuItem.RIGHT);
editItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
Properties locator=Locator.toProperties(digestLocator$);
String encodedSelection$=locator.getProperty(JEntityDigestDisplay.SELECTION);
byte[]ba=Base64.decodeBase64(encodedSelection$);
String selection$=new String(ba,"UTF-8");
locator=Locator.toProperties(selection$);
String entihome$=locator.getProperty(Entigrator.ENTIHOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
String nodeType$=locator.getProperty(JEntityDigestDisplay.NODE_TYPE);
if(debug)
System.out.println("JFieldsFacetOpenItem:getPopupMenu:node type:"+nodeType$);
Entigrator entigrator=console.getEntigrator(entihome$);
if(NODE_TYPE_FIELD_NAME.equals(nodeType$)){
String fieldName$=locator.getProperty(Locator.LOCATOR_TITLE);
JTextEditor te=new JTextEditor();
String teLocator$=te.getLocator();
teLocator$=Locator.append(teLocator$, JTextEditor.TEXT, fieldName$);
if(entihome$!=null)
teLocator$=Locator.append(teLocator$,Entigrator.ENTIHOME,entihome$);
if(entityKey$!=null)
teLocator$=Locator.append(teLocator$,EntityHandler.ENTITY_KEY,entityKey$);
String foiLocator$=getLocator();
foiLocator$=Locator.append(foiLocator$,BaseHandler.HANDLER_METHOD,METHOD_RESPONSE);
foiLocator$=Locator.append(foiLocator$, JRequester.REQUESTER_ACTION,ACTION_DIGEST_CALL);
foiLocator$=Locator.append(foiLocator$, FIELD_NAME,fieldName$);
foiLocator$=Locator.append(foiLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(digestLocator$));
if(entihome$!=null)
foiLocator$=Locator.append(foiLocator$,Entigrator.ENTIHOME,entihome$);
if(entityKey$!=null)
foiLocator$=Locator.append(foiLocator$,EntityHandler.ENTITY_KEY,entityKey$);
if(debug)
System.out.println("JFieldsFacetOpenItem:getPopupMenu:name:locator="+foiLocator$);
teLocator$=Locator.append(teLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(foiLocator$));
JConsoleHandler.execute(console, teLocator$);
if(debug)
System.out.println("JFieldsFacetOpenItem:getPopupMenu:teLocator="+teLocator$);
return;
}
if(NODE_TYPE_FIELD_VALUE.equals(nodeType$)){
String fieldName$=locator.getProperty(Locator.LOCATOR_TITLE);
JTextEditor te=new JTextEditor();
String teLocator$=te.getLocator();
teLocator$=Locator.append(teLocator$, JTextEditor.TEXT, fieldName$);
if(entihome$!=null)
teLocator$=Locator.append(teLocator$,Entigrator.ENTIHOME,entihome$);
if(entityKey$!=null)
teLocator$=Locator.append(teLocator$,EntityHandler.ENTITY_KEY,entityKey$);
String foiLocator$=getLocator();
foiLocator$=Locator.append(foiLocator$,BaseHandler.HANDLER_METHOD,METHOD_RESPONSE);
foiLocator$=Locator.append(foiLocator$, JRequester.REQUESTER_ACTION,ACTION_DIGEST_CALL);
foiLocator$=Locator.append(foiLocator$, FIELD_NAME,fieldName$);
foiLocator$=Locator.append(foiLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(digestLocator$));
if(entihome$!=null)
foiLocator$=Locator.append(foiLocator$,Entigrator.ENTIHOME,entihome$);
if(entityKey$!=null)
foiLocator$=Locator.append(foiLocator$,EntityHandler.ENTITY_KEY,entityKey$);
if(debug)
System.out.println("JFieldsFacetOpenItem:getPopupMenu:value:locator="+foiLocator$);
teLocator$=Locator.append(teLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(foiLocator$));
JConsoleHandler.execute(console, teLocator$);
return;
}
if(JEntityDigestDisplay.NODE_TYPE_FACET_OWNER.equals(nodeType$)){
JEntityDigestDisplay edd=new JEntityDigestDisplay();
String eddLocator$=edd.getLocator();
eddLocator$=Locator.append(eddLocator$, Entigrator.ENTIHOME, entihome$);
eddLocator$=Locator.append(eddLocator$, EntityHandler.ENTITY_KEY, entityKey$);
eddLocator$=Locator.append(eddLocator$, JEntityDigestDisplay.SELECTION, encodedSelection$);
String requesterResponseLocator$=Locator.compressText(eddLocator$);
JFieldsEditor fieldsEditor=new JFieldsEditor();
String feLocator$=fieldsEditor.getLocator();
feLocator$=Locator.append(feLocator$, Entigrator.ENTIHOME, entihome$);
feLocator$=Locator.append(feLocator$, EntityHandler.ENTITY_KEY, entityKey$);
feLocator$=Locator.append(feLocator$, JRequester.REQUESTER_RESPONSE_LOCATOR, requesterResponseLocator$);
feLocator$=Locator.append(feLocator$, BaseHandler.HANDLER_METHOD,"instantiate");
JConsoleHandler.execute(console, feLocator$);
}
}catch(Exception ee){
Logger.getLogger(JFieldsFacetOpenItem.class.getName()).info(ee.toString());
}
}
});
return popup;
}
@Override
public String getFacetIconName() {
return "fields.png";
}
@Override
public String getWebView(Entigrator entigrator, String locator$) {
try{
Properties locator=Locator.toProperties(locator$);
String webHome$=locator.getProperty(WContext.WEB_HOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
String entityLabel$=locator.getProperty(EntityHandler.ENTITY_LABEL);
String webRequester$=locator.getProperty(WContext.WEB_REQUESTER);
String fieldsFacet$=locator.getProperty(FIELDS_FACET);
if(debug)
System.out.println("JFieldsFacetOpenItem:web home="+webHome$+ " web requester="+webRequester$);
//entityKey$=entigrator.indx_keyAtLabel(entityLabel$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
Core[] ca=entity.elementGet("field");
StringBuffer sb=new StringBuffer();
sb.append("");
sb.append("");
sb.append("");
sb.append(WUtils.getMenuBarScript());
sb.append(WUtils.getMenuBarStyle());
sb.append("");
sb.append("");
sb.append("Base: ");
sb.append(entigrator.getBaseName());
sb.append(" Entity: ");
sb.append(entityLabel$);
sb.append(" ");
if(fieldsFacet$==null)
fieldsFacet$="Fields";
sb.append("Facet: "+fieldsFacet$+" ");
sb.append("
");
if(ca!=null){
// sb.append("");
sb.append("");
sb.append("");
sb.append("");
return sb.toString();
}
}catch(Exception e){
Logger.getLogger(JBasesPanel.class.getName()).severe(e.toString());
}
return null;
}
@Override
public String getWebConsole(Entigrator entigrator, String locator$) {
// TODO Auto-generated method stub
return null;
}
}
");
sb.append("
© 2015 - 2025 Weber Informatics LLC | Privacy Policy