gdt.jgui.entity.webset.JWeblinkEditor Maven / Gradle / Ivy
package gdt.jgui.entity.webset;
/*
* 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.Color;
import java.awt.Desktop;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.Properties;
import java.util.Stack;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JMenu;
import javax.swing.JPanel;
import gdt.data.entity.BaseHandler;
import gdt.data.entity.EntityHandler;
import gdt.data.entity.facet.WebsetHandler;
import gdt.data.grain.Core;
import gdt.data.grain.Identity;
import gdt.data.grain.Locator;
import gdt.data.grain.Sack;
import gdt.data.grain.Support;
import gdt.data.store.Entigrator;
import gdt.jgui.console.JConsoleHandler;
import gdt.jgui.console.JContext;
import gdt.jgui.console.JFacetRenderer;
import gdt.jgui.console.JMainConsole;
import gdt.jgui.console.JRequester;
import gdt.jgui.console.ReloadDialog;
import gdt.jgui.entity.JEntitiesPanel;
import gdt.jgui.entity.JEntityFacetPanel;
import gdt.jgui.entity.JEntityPrimaryMenu;
import gdt.jgui.entity.JReferenceEntry;
import gdt.jgui.tool.JIconSelector;
import gdt.jgui.tool.JTextEditor;
import gdt.jgui.tool.JTextEncrypter;
import javax.swing.ImageIcon;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JLabel;
import org.apache.commons.codec.binary.Base64;
import javax.swing.JTextField;
import java.awt.Insets;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
/**
* This class represents the web link editor context.
* @author imasa
*
*/
public class JWeblinkEditor extends JPanel implements JFacetRenderer,JRequester,ClipboardOwner {
private static final long serialVersionUID = 1L;
private static final String ACTION_NEW_ENTITY="action new entity";
private static final String ACTION_SET_ICON="action set icon";
private static final String ACTION_ENCODE_PASSWORD="action encode password";
public static final String METHOD_BROWSE_URL="browseUrl";
String entihome$;
String entityKey$;
String entityLabel$;
String webLinkKey$;
String requesterResponseLocator$;
JMainConsole console;
String locator$;
private JTextField nameField;
private JTextField addressField;
private JTextField loginField;
private JTextField passwordField;
private JLabel iconIcon;
private GridBagConstraints c;
private GridBagConstraints c_0;
private GridBagConstraints c_1;
private GridBagConstraints c_2;
private GridBagConstraints c_3;
private GridBagConstraints c_4;
private GridBagConstraints c_5;
private GridBagConstraints c_6;
private GridBagConstraints c_7;
private GridBagConstraints c_8;
private GridBagConstraints c_9;
JPopupMenu iconMenu;
String message$;
Sack entity;
boolean debug=false;
boolean ignoreOutdate=false;
/**
* The default constructor.
*/
public JWeblinkEditor() {
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.rowHeights = new int[]{0, 0, 0, 0, 0};
gridBagLayout.columnWeights = new double[]{0.0, 1.0};
gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0};
setLayout(gridBagLayout);
String icon$=Support.readHandlerIcon(null,JEntitiesPanel.class, "globe.png");
byte[] ba=Base64.decodeBase64(icon$);
ImageIcon icon = new ImageIcon(ba);
Image image= icon.getImage().getScaledInstance(24, 24, 0);
icon.setImage(image);
JLabel iconLabel = new JLabel("Icon");
c= new GridBagConstraints();
c.insets = new Insets(5,5, 5, 5);
c.anchor=GridBagConstraints.FIRST_LINE_START;
c.weighty=0;
c.gridx = 0;
c.gridy = 0;
add(iconLabel, c);
iconLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
showIconMenu(e);
}
});
iconIcon = new JLabel();
iconIcon.setIcon(icon);
c_0= new GridBagConstraints();
c_0.anchor = GridBagConstraints.WEST;
c_0.insets = new Insets(0,5, 5, 0);
c.anchor = GridBagConstraints.WEST;
c_0.gridx = 1;
c_0.gridy = 0;
add(iconIcon, c_0);
iconIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
showIconMenu(e);
}
});
JLabel lblName = new JLabel("Name");
c_1= new GridBagConstraints();
c_1.insets = new Insets(5, 5, 5, 5);
c_1.fill = GridBagConstraints.HORIZONTAL;
c_1.gridx = 0;
c_1.gridy = 1;
add(lblName, c_1);
nameField = new JTextField();
c_2= new GridBagConstraints();
c_2.insets = new Insets(0, 5, 5, 0);
c_2.fill = GridBagConstraints.HORIZONTAL;
c_2.gridx = 1;
c_2.gridy = 1;
add(nameField, c_2);
JLabel lblUrl = new JLabel("Address");
c_3= new GridBagConstraints();
c_3.insets = new Insets(5, 5, 5, 5);
c_3.fill = GridBagConstraints.HORIZONTAL;
c_3.gridx = 0;
c_3.gridy = 2;
add(lblUrl, c_3);
addressField = new JTextField();
c_4= new GridBagConstraints();
c_4.insets = new Insets(0, 5, 5, 0);
c_4.fill = GridBagConstraints.HORIZONTAL;
c_4.gridx = 1;
c_4.gridy = 2;
add(addressField, c_4);
JLabel lblLogin = new JLabel("Login");
c_5= new GridBagConstraints();
c_5.insets = new Insets(5, 5, 5, 5);
c_5.fill = GridBagConstraints.HORIZONTAL;
c_5.gridx = 0;
c_5.gridy = 3;
add(lblLogin, c_5);
lblLogin.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
showLoginMenu(e);
}
});
loginField = new JTextField();
c_6= new GridBagConstraints();
c_6.insets = new Insets(0, 5, 5, 0);
c_6.fill = GridBagConstraints.HORIZONTAL;
c_6.gridx = 1;
c_6.gridy = 3;
add(loginField, c_6);
JLabel lblPassword = new JLabel("Password");
c_7= new GridBagConstraints();
c_7.insets = new Insets(5, 5, 5, 5);
c_7.fill = GridBagConstraints.HORIZONTAL;
c_7.gridx = 0;
c_7.gridy = 4;
add(lblPassword, c_7);
lblPassword.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
showPasswordMenu(e);
}
});
passwordField = new JTextField();
c_8= new GridBagConstraints();
c_8.insets = new Insets(0, 5, 5, 0);
c_8.fill = GridBagConstraints.HORIZONTAL;
c_8.gridx = 1;
c_8.gridy = 4;
add(passwordField, c_8);
JPanel bottom=new JPanel();
c_9= new GridBagConstraints();
c_9.weighty=1;
c_9.fill = GridBagConstraints.VERTICAL;
c_9.gridx = 0;
c_9.gridy = 5;
add(bottom, c_9);
}
private void showIconMenu(MouseEvent e){
try{
iconMenu=new JPopupMenu();
JMenuItem loadItem=new JMenuItem("Load");
iconMenu.add(loadItem);
loadItem.setHorizontalTextPosition(JMenuItem.RIGHT);
loadItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
String favicon$="http://www.google.com/s2/favicons?domain="+addressField.getText();
URL url = new URL(favicon$);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
ImageIcon icon = new ImageIcon(ImageIO.read(input));
int type = BufferedImage.TYPE_INT_RGB;
BufferedImage out = new BufferedImage(24, 24, type);
Color background=JWeblinkEditor.this.getBackground();
Graphics2D g2 = out.createGraphics();
g2.setBackground(background);
g2.clearRect(0, 0, 24, 24);
Image image=icon.getImage();
g2.drawImage(image, 4, 4, null);
g2.dispose();
icon=new ImageIcon(out);
iconIcon.setIcon(icon);
input.close();
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}});
JMenuItem setItem=new JMenuItem("Set");
iconMenu.add(setItem);
setItem.setHorizontalTextPosition(JMenuItem.RIGHT);
setItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("WeblinkEditor:set icon");
JIconSelector is=new JIconSelector();
String isLocator$=is.getLocator();
if(entihome$!=null)
isLocator$=Locator.append(isLocator$,Entigrator.ENTIHOME,entihome$);
if(entityKey$!=null)
isLocator$=Locator.append(isLocator$,EntityHandler.ENTITY_KEY,entityKey$);
String responseLocator$=getLocator();
responseLocator$=Locator.append(responseLocator$,JRequester.REQUESTER_ACTION, ACTION_SET_ICON);
responseLocator$=Locator.append(responseLocator$,BaseHandler.HANDLER_METHOD, "response");
isLocator$=Locator.append(isLocator$,JRequester.REQUESTER_RESPONSE_LOCATOR, Locator.compressText(responseLocator$));
JConsoleHandler.execute(console,isLocator$);
}});
iconMenu.show(e.getComponent(), e.getX(), e.getY());
}catch(Exception ee){
Logger.getLogger(getClass().getName()).severe(ee.toString());
}
}
private void showLoginMenu(MouseEvent e){
try{
JPopupMenu logonMenu=new JPopupMenu();
JMenuItem copyItem=new JMenuItem("Copy");
logonMenu.add(copyItem);
copyItem.setHorizontalTextPosition(JMenuItem.RIGHT);
copyItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
StringSelection stringSelection = new StringSelection(loginField.getText());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, JWeblinkEditor.this);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}});
logonMenu.show(e.getComponent(), e.getX(), e.getY());
}catch(Exception ee){
Logger.getLogger(getClass().getName()).severe(ee.toString());
}
}
private void showPasswordMenu(MouseEvent e){
try{
JPopupMenu passwordMenu=new JPopupMenu();
JMenuItem copyItem=new JMenuItem("Copy");
passwordMenu.add(copyItem);
copyItem.setHorizontalTextPosition(JMenuItem.RIGHT);
copyItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
StringSelection stringSelection = new StringSelection(passwordField.getText());
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, JWeblinkEditor.this);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}});
JMenuItem encodeItem=new JMenuItem("Encrypt/decrypt");
passwordMenu.add(encodeItem);
encodeItem.setHorizontalTextPosition(JMenuItem.RIGHT);
encodeItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
save();
JTextEncrypter te=new JTextEncrypter();
String teLocator$=te.getLocator();
teLocator$=Locator.append(teLocator$,Entigrator.ENTIHOME, entihome$);
teLocator$=Locator.append(teLocator$,JTextEditor.TEXT, passwordField.getText());
teLocator$=Locator.append(teLocator$,JTextEditor.TEXT_TITLE, nameField.getText());
String weLocator$=JWeblinkEditor.this.getLocator();
weLocator$=Locator.append(weLocator$, BaseHandler.HANDLER_METHOD,"response");
weLocator$=Locator.append(weLocator$, JRequester.REQUESTER_ACTION,ACTION_ENCODE_PASSWORD);
teLocator$=Locator.append(teLocator$,JRequester.REQUESTER_RESPONSE_LOCATOR,Locator.compressText(weLocator$));
JConsoleHandler.execute(console, teLocator$);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}});
passwordMenu.show(e.getComponent(), e.getX(), e.getY());
}catch(Exception ee){
Logger.getLogger(getClass().getName()).severe(ee.toString());
}
}
/**
* Get the panel to insert into the main console.
* @return the panel.
*/
@Override
public JPanel getPanel() {
return this;
}
/**
* Get the context menu.
* @return the context menu.
*/
@Override
public JMenu getContextMenu() {
JMenu menu=new JMenu("Context");
JMenuItem doneItem = new JMenuItem("Done");
doneItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
save();
if(requesterResponseLocator$!=null){
try{
byte[] ba=Base64.decodeBase64(requesterResponseLocator$);
String responseLocator$=new String(ba,"UTF-8");
JConsoleHandler.execute(console, responseLocator$);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).severe(ee.toString());
}
}else{
Entigrator entigrator=console.getEntigrator(entihome$);
entigrator.ent_alter(entity);
console.back();
}
}
} );
menu.add(doneItem);
JMenuItem cancelItem = new JMenuItem("Cancel");
cancelItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
browseUrl(console,locator$);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}
} );
menu.add(cancelItem);
menu.addSeparator();
JMenuItem browseItem = new JMenuItem("Browse");
browseItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try{
Desktop.getDesktop().browse(new URI(addressField.getText()));
}catch(Exception ee){
Logger.getLogger(JWeblinkEditor.class.getName()).info(ee.toString());
}
}
} );
menu.add(browseItem);
return menu;
}
private void save(){
try{
Entigrator entigrator=console.getEntigrator(entihome$);
Sack webset=entigrator.getEntityAtKey(entityKey$);
webset.putElementItem("web",new Core(nameField.getText(),webLinkKey$,addressField.getText()));
String login$=loginField.getText();
String password$=passwordField.getText();
if(login$!=null||password$!=null)
webset.putElementItem("web.login",new Core(login$,webLinkKey$,password$));
ImageIcon imageIcon = (ImageIcon)iconIcon.getIcon();
if(imageIcon!=null){
BufferedImage bi = (BufferedImage)imageIcon.getImage();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi, "png", baos);
byte[] res=baos.toByteArray();
String icon$ = Base64.encodeBase64String(res);
webset.putElementItem("web.icon",new Core(null,webLinkKey$,icon$));
}
entigrator.ent_alter(webset);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
/**
* Get the context locator.
* @return the context locator.
*/
@Override
public String getLocator() {
try{
Properties locator=new Properties();
locator.setProperty(BaseHandler.HANDLER_CLASS,getClass().getName());
locator.setProperty(BaseHandler.HANDLER_SCOPE,JConsoleHandler.CONSOLE_SCOPE);
locator.setProperty( JContext.CONTEXT_TYPE,getType());
String title$=null;
if(nameField!=null)
if(getTitle()!=null)
title$=getTitle();
if(title$==null)
title$="Web address";
locator.setProperty(Locator.LOCATOR_TITLE,title$);
if(entityLabel$!=null){
locator.setProperty(EntityHandler.ENTITY_LABEL,entityLabel$);
}
if(entityKey$!=null)
locator.setProperty(EntityHandler.ENTITY_KEY,entityKey$);
if(entihome$!=null)
locator.setProperty(Entigrator.ENTIHOME,entihome$);
if(webLinkKey$!=null){
locator.setProperty(JWeblinksPanel.WEB_LINK_KEY,webLinkKey$);
locator.setProperty(Locator.LOCATOR_ICON_CONTAINER,Locator.LOCATOR_ICON_CONTAINER_ENTITY);
locator.setProperty(Locator.LOCATOR_ICON_ELEMENT,"web.icon");
locator.setProperty(Locator.LOCATOR_ICON_CORE,webLinkKey$);
locator.setProperty(Locator.LOCATOR_ICON_FIELD,Locator.LOCATOR_ICON_FIELD_VALUE);
}else{
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,"globe.png");
}
return Locator.toString(locator);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
return null;
}
}
/**
* Create the context.
* @param console the main console.
* @param locator$ the locator string.
* @return the procedure context.
*/
@Override
public JContext instantiate(JMainConsole console, String locator$) {
try{
if(debug)
System.out.println("WeblinkEditor.instantiate:locator="+locator$);
this.console=console;
Properties locator=Locator.toProperties(locator$);
entihome$=locator.getProperty(Entigrator.ENTIHOME);
entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
webLinkKey$=locator.getProperty(JWeblinksPanel.WEB_LINK_KEY);
Entigrator entigrator=console.getEntigrator(entihome$);
entityLabel$=entigrator.indx_getLabel(entityKey$);
if(Locator.LOCATOR_TRUE.equals(locator.getProperty(JFacetRenderer.ONLY_ITEM)))
return this;
entity=entigrator.getEntityAtKey(entityKey$);
// if(!entigrator.lock_set(entity))
// message$=entigrator.lock_message(entity);
Core address=entity.getElementItem("web", webLinkKey$);
addressField.setText(address.value);
nameField.setText(address.type);
Core login=entity.getElementItem("web.login", webLinkKey$);
if(login!=null){
loginField.setText(login.type);
passwordField.setText(login.value);
}
Core iconCore=entity.getElementItem("web.icon", webLinkKey$);
if(iconCore!=null&&iconCore.value!=null){
try{ String icon$=iconCore.value;
byte[] ba=Base64.decodeBase64(icon$);
ImageIcon icon = new ImageIcon(ba);
Image image= icon.getImage().getScaledInstance(24, 24, 0);
icon.setImage(image);
iconIcon.setIcon(icon);
}catch(Exception ee){}
}
requesterResponseLocator$=locator.getProperty(JRequester.REQUESTER_RESPONSE_LOCATOR);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
return this;
}
/**
* Add icon string to the locator.
* @param locator$ the origin locator.
* @return the locator.
*/
@Override
public String addIconToLocator(String locator$) {
return locator$;
}
/**
* Get facet handler class name.
* @return the facet handler class name.
*/
@Override
public String getFacetHandler() {
return WebsetHandler.class.getName();
}
/**
* Get the type of the entity for the facet.
* @return the entity type.
*/
@Override
public String getEntityType() {
return "webset";
}
/**
* Get facet icon as a Base64 string.
* @return the icon string.
*/
@Override
public String getCategoryIcon(Entigrator entigrator) {
return Support.readHandlerIcon(null,JEntitiesPanel.class, "globe.png");
}
/**
* Get category title for entities having the facet type.
* @return the category title.
*/
@Override
public String getCategoryTitle() {
return "Web links";
}
/**
* Adapt cloned entity.
* @param console the main console.
* @param locator$ the locator string.
*/
@Override
public void adaptClone(JMainConsole console, String locator$) {
try{
// System.out.println("WebsetEditor:adaptClone:locator="+locator$);
Properties locator=Locator.toProperties(locator$);
String entihome$=locator.getProperty(Entigrator.ENTIHOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
Entigrator entigrator=console.getEntigrator(entihome$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
String entityLocator$=EntityHandler.getEntityLocator(entigrator, entity);
WebsetHandler websetHandler=new WebsetHandler();
websetHandler.instantiate(entityLocator$);
websetHandler.adaptClone(entigrator);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
/**
* Adapt renamed entity.
* @param console the main console.
* @param locator$ the locator string.
*/
@Override
public void adaptRename(JMainConsole console, String locator$) {
try{
System.out.println("WeblinkEditor:adaptRename:locator="+locator$);
Properties locator=Locator.toProperties(locator$);
String entihome$=locator.getProperty(Entigrator.ENTIHOME);
String entityKey$=locator.getProperty(EntityHandler.ENTITY_KEY);
Entigrator entigrator=console.getEntigrator(entihome$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
String entityLocator$=EntityHandler.getEntityLocator(entigrator, entity);
WebsetHandler websetHandler=new WebsetHandler();
websetHandler.instantiate(entityLocator$);
websetHandler.adaptRename(entigrator);
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
/**
* Rebuild entity's facet related parameters.
* @param console the main console
* @param entigrator the entigrator.
* @param entity the entity.
*/
@Override
public void reindex(JMainConsole console, Entigrator entigrator, Sack entity) {
try{
String websetHandler$=WebsetHandler.class.getName();
if(entity.getElementItem("fhandler", websetHandler$)==null)
return;
if(entity.getElementItem("jfacet", websetHandler$)==null){
entity.putElementItem("jfacet", new Core(JWebsetFacetAddItem.class.getName(),websetHandler$,JWebsetFacetOpenItem.class.getName()));
entigrator.ent_alter(entity);
}
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
/**
* Create a new entity of the facet type.
* @param console the main console.
* @param locator$ the locator string.
* @return the new entity key.
*/
@Override
public String newEntity(JMainConsole console, String locator$) {
JTextEditor textEditor=new JTextEditor();
String editorLocator$=textEditor.getLocator();
editorLocator$=Locator.append(editorLocator$, JTextEditor.TEXT, "Web links"+Identity.key().substring(0,4));
editorLocator$=Locator.append(editorLocator$,Locator.LOCATOR_TITLE,"Web links entity");
// String icon$=Support.readHandlerIcon(null,JEntitiesPanel.class, "globe.png");
// editorLocator$=Locator.append(editorLocator$,Locator.LOCATOR_ICON,icon$);
JWeblinkEditor fe=new JWeblinkEditor();
String feLocator$=fe.getLocator();
Properties responseLocator=Locator.toProperties(feLocator$);
entihome$=Locator.getProperty(locator$,Entigrator.ENTIHOME );
if(entihome$!=null){
responseLocator.setProperty(Entigrator.ENTIHOME,entihome$);
editorLocator$=Locator.append(editorLocator$,Entigrator.ENTIHOME,entihome$);
}
responseLocator.setProperty(BaseHandler.HANDLER_CLASS,getClass().getName());
responseLocator.setProperty(BaseHandler.HANDLER_METHOD,"response");
responseLocator.setProperty(BaseHandler.HANDLER_SCOPE,JConsoleHandler.CONSOLE_SCOPE);
responseLocator.setProperty(BaseHandler.HANDLER_METHOD,"response");
responseLocator.setProperty(JRequester.REQUESTER_ACTION,ACTION_NEW_ENTITY);
responseLocator.setProperty(Locator.LOCATOR_TITLE,"Web links");
String responseLocator$=Locator.toString(responseLocator);
String requesterResponseLocator$=Locator.compressText(responseLocator$);
editorLocator$=Locator.append(editorLocator$,JRequester.REQUESTER_RESPONSE_LOCATOR,requesterResponseLocator$);
JConsoleHandler.execute(console,editorLocator$);
return editorLocator$;
}
/**
* 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("WeblinksEditor:response:"+Locator.remove(locator$,Locator.LOCATOR_ICON ));
try{
Properties locator=Locator.toProperties(locator$);
String action$=locator.getProperty(JRequester.REQUESTER_ACTION);
entihome$=locator.getProperty(Entigrator.ENTIHOME);
Entigrator entigrator=console.getEntigrator(entihome$);
String text$=locator.getProperty(JTextEditor.TEXT);
if(ACTION_NEW_ENTITY.equals(action$)){
Sack newEntity=entigrator.ent_new("webset", text$);
newEntity.createElement("fhandler");
newEntity.putElementItem("fhandler", new Core(null,WebsetHandler.class.getName(),null));
newEntity.putAttribute(new Core (null,"icon","globe.png"));
entigrator.ent_alter(newEntity);
String icons$=entihome$+"/"+Entigrator.ICONS;
Support.addHandlerIcon(JEntitiesPanel.class, "globe.png", icons$);
newEntity=entigrator.ent_reindex(newEntity);
reindex(console, entigrator, newEntity);
JEntityFacetPanel efp=new JEntityFacetPanel();
String efpLocator$=efp.getLocator();
efpLocator$=Locator.append(efpLocator$,Locator.LOCATOR_TITLE,newEntity.getProperty("label"));
efpLocator$=Locator.append(efpLocator$, Entigrator.ENTIHOME, entihome$);
efpLocator$=Locator.append(efpLocator$, EntityHandler.ENTITY_KEY, newEntity.getKey());
efpLocator$=Locator.append(efpLocator$, EntityHandler.ENTITY_LABEL, newEntity.getProperty("label"));
JEntityPrimaryMenu.reindexEntity(console, efpLocator$);
Stack s=console.getTrack();
s.pop();
console.setTrack(s);
entigrator.store_replace();
JConsoleHandler.execute(console, efpLocator$);
return;
}
if(ACTION_SET_ICON.equals(action$)){
//System.out.println("WeblinkEditor:response:set icon:locator="+locator$);
try{
String iconFile$=locator.getProperty(JIconSelector.ICON);
// System.out.println("WeblinkEditor:response:set icon="+iconFile$);
Sack entity=entigrator.getEntityAtKey(entityKey$);
entity.putElementItem("web.icon", new Core(null,webLinkKey$,iconFile$));
entigrator.ent_alter(entity);
locator$=Locator.remove(locator$,BaseHandler.HANDLER_METHOD);
locator$=Locator.remove(locator$,JRequester.REQUESTER_ACTION);
JConsoleHandler.execute(console, locator$);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
return;
}
if(ACTION_ENCODE_PASSWORD.equals(action$)){
//System.out.println("WeblinkEditor:response:set icon:locator="+locator$);
try{
Sack entity=entigrator.getEntityAtKey(entityKey$);
Core login=entity.getElementItem("web.login",webLinkKey$ );
if(login==null){
if(!entity.existsElement("web.login"))
entity.createElement("web.login");
login=new Core(null,webLinkKey$,text$);
}else
login.value=text$;
entity.putElementItem("web.login",login);
entigrator.ent_alter(entity);
locator$=Locator.remove(locator$,BaseHandler.HANDLER_METHOD);
locator$=Locator.remove(locator$,JRequester.REQUESTER_ACTION);
JConsoleHandler.execute(console, locator$);
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
return;
}
}catch(Exception e){
Logger.getLogger(getClass().getName()).severe(e.toString());
}
}
/**
* Open URL in the default browse.
* @param console the main console.
* @param locator$ the locator string.
*/
public void browseUrl(JMainConsole console,String locator$){
try{
Properties locator=Locator.toProperties(locator$);
String url$=locator.getProperty(JWeblinksPanel.WEB_LINK_URL);
// System.out.println("weblinkEditor:browseUrl:url="+url$);
Desktop.getDesktop().browse(new URI(url$));
}catch(Exception ee){
Logger.getLogger(getClass().getName()).info(ee.toString());
}
}
/**
* Get context title.
* @return the context title.
*/
@Override
public String getTitle() {
try{
return nameField.getText();
}catch(Exception e){
return null;
}
}
/**
* Get context subtitle.
* @return the context subtitle.
*/
@Override
public String getSubtitle() {
return entityLabel$;
}
/**
* Get context type.
* @return the context type.
*/
@Override
public String getType() {
return "Web link editor";
}
/**
* Complete context. No action.
*/
@Override
public void close() {
}
/**
* No action.
*/
@Override
public void lostOwnership(Clipboard clipboard, Transferable contents) {
}
/**
* No action.
*/
@Override
public void collectReferences(Entigrator entigrator, String entiyKey$, ArrayList sl) {
}
@Override
public void activate() {
if(debug)
System.out.println("JWeblinkEditor:activate:begin");
Entigrator entigrator=console.getEntigrator(entihome$);
if(entity==null)
return;
if(ignoreOutdate){
ignoreOutdate=false;
return;
}
if(!entigrator.ent_entIsObsolete(entity)){
System.out.println("JWeblinkEditor:activate:up to date");
return;
}
int n=new ReloadDialog(this).show();
if(2==n){
ignoreOutdate=true;
return;
}
if(1==n){
entigrator.ent_alter(entity);
}
if(0==n){
JConsoleHandler.execute(console, getLocator());
}
}
@Override
public String getFacetOpenItem() {
// TODO Auto-generated method stub
return JWebsetFacetOpenItem.class.getName();
}
@Override
public String getFacetIcon() {
// TODO Auto-generated method stub
return "globe.png";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy