package automenta.netention.app;
import automenta.netention.Detail;
import automenta.netention.PropertyValue;
import automenta.netention.Self;
import automenta.netention.demo.Demo;
import automenta.netention.impl.MemorySelf;
import automenta.netention.swing.detail.DetailEditPanel;
import automenta.netention.swing.util.SwingWindow;
import com.google.gson.Gson;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import javax.swing.*;
import javax.swing.border.LineBorder;
/**
*
* @author seh
*/
public class RunDetailEdit implements Demo {
@Override
public String getDescription() {
return "";
}
@Override
public String getName() {
return "Detail Editing";
}
public JPanel newPanel() {
final Self mSelf = RunSelfBrowser.newDefaultSelf();
final Detail d = new Detail("Untitled");
mSelf.addDetail(d);
final EncodingPanel ep = new EncodingPanel(d);
final DetailEditPanel views = new DetailEditPanel(mSelf, new Detail(), false, false) {
@Override
protected void deleteThis() {
}
@Override
protected void patternChanged() {
}
};
views.setBackground(Color.WHITE);
views.sentences.setOpaque(false);
views.bottomBar.setOpaque(false);
DetailEditPanel edits = new DetailEditPanel(mSelf, d, true, false) {
@Override protected void deleteThis() {
}
@Override
protected void patternChanged() {
}
@Override
protected synchronized void saveToDetail() {
super.saveToDetail();
ep.refresh();
views.setDetail(getDetail(ep.getJSON()));
}
};
JPanel p = new JPanel(new GridLayout(1, 2));
JTabbedPane s = new JTabbedPane();
{
s.addTab("Read-Only", views);
s.addTab("JSON", ep);
}
s.setBorder(new LineBorder(Color.BLACK, 13));
edits.setBorder(new LineBorder(Color.BLACK, 13));
p.add(edits);
p.add(s);
return p;
}
public static class EncodingPanel extends JPanel {
private final JTextArea textArea;
private final Detail detail;
public EncodingPanel(Detail d) {
super(new BorderLayout());
this.detail = d;
textArea = new JTextArea();
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
add(textArea, BorderLayout.CENTER);
refresh();
}
public String getJSON() {
return textArea.getText();
}
public void refresh() {
textArea.setText(MemorySelf.toJSON(detail));
}
}
public static Detail getDetail(String json) {
Detail md = new Gson().fromJson(json, Detail.class);
System.out.println(md.getName());
System.out.println(md.getPatterns());
System.out.println(md.getValues());
return md;
}
public static Color getColor(PropertyValue pv, float s, float b) {
float h = ((float) (pv.getProperty().hashCode() % 512)) / 512.0f;
return Color.getHSBColor(h, s, b);
}
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JPanel p = new RunDetailEdit().newPanel();
SwingWindow window = new SwingWindow(p, 1200, 800, true);
}
});
}
}