Files
dev/plugins/Tomaz.java
2018-08-24 12:07:28 +02:00

309 lines
11 KiB
Java

/*
* Copyright (c) 2014-2018 Paul Scherrer Institute. All rights reserved.
*/
import ch.psi.pshell.bs.ProviderConfig;
import ch.psi.pshell.ui.Console;
import ch.psi.pshell.ui.Panel;
import ch.psi.utils.Config;
import ch.psi.utils.State;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.LayoutManager;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BorderFactory;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.WindowConstants;
/**
*
*/
public class Tomaz extends Panel {
/*
public JComponent makeUI() {
SpinnerNumberModel m = new SpinnerNumberModel(10, 0, 1000, 1);
JSpinner spinner = new JSpinner(m) {
@Override public void setLayout(LayoutManager mgr) {
super.setLayout(new SpinnerLayout());
}
};
JPanel p = new JPanel(new BorderLayout(5,5));
p.add(new JSpinner(m), BorderLayout.NORTH);
p.add(spinner, BorderLayout.SOUTH);
p.setBorder(BorderFactory.createEmptyBorder(16,16,16,16));
return p;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new SpinnerLayoutTest().makeUI());
f.setSize(320, 160);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
class SpinnerLayout extends BorderLayout {
@Override public void addLayoutComponent(Component comp, Object constraints) {
if("Editor".equals(constraints)) {
constraints = "Center";
} else if("Next".equals(constraints)) {
constraints = "North";
} else if("Previous".equals(constraints)) {
constraints = "South";
}
super.addLayoutComponent(comp, constraints);
}
} */
private static class HorizontalSpinnerLayoutManager implements LayoutManager
{
final Component bup;
final Component bdown;
final Component txt;
int buttom_width;
int buttom_height;
HorizontalSpinnerLayoutManager(JSpinner sp)
{
Component[] components = sp.getComponents();
bup = components[0];
bdown = components[1];
txt = components[2];
//((javax.swing.JButton)bup).getBorder()
buttom_width=bdown.getPreferredSize().width-3;
}
public void addLayoutComponent(String name, Component comp) {
}
public void removeLayoutComponent(Component comp) {
}
public Dimension preferredLayoutSize(Container parent) {
Insets in = parent.getInsets();
//return parent.getPreferredSize();
return new Dimension(2*buttom_width + Math.max(txt.getPreferredSize().width,12) , //Compressing a bit+ not considering insets on width
txt.getPreferredSize().height + in.top + in.bottom);
//Insets insets = parent.getInsets();
//insets
}
public Dimension minimumLayoutSize(Container parent) {
Insets in = parent.getInsets();
return new Dimension(2*buttom_width + txt.getMinimumSize().width ,
bdown.getMinimumSize().height + in.top + in.bottom);
}
public void layoutContainer(Container parent) {
Insets in = parent.getInsets();
int top=1;
int bottom=parent.getHeight()-1;
int left=1;
int right=parent.getWidth()-1;
int width=right-left;
int height=bottom-top;
// if ( isStyleXP())
// {
// bdown.setBounds(left, top+1, buttom_width, height-1);
// bup.setBounds(right-buttom_width, top, buttom_width, height-1);
// }
// else
{
bdown.setBounds(left, top, buttom_width, height);
bup.setBounds(right-buttom_width, top, buttom_width, height);
}
txt.setBounds( left+buttom_width, top, width- (2*buttom_width),height);
}
}
public static boolean setHorizontalSpinner(javax.swing.JSpinner sp)
{
if (sp.getLayout() instanceof HorizontalSpinnerLayoutManager)
return true;
if (sp.getComponents().length!=3)
return false;
sp.setLayout(new HorizontalSpinnerLayoutManager(sp));
//final Component bup = components[0];
//final Component bdown = components[1];
//final Component txt = components[2];
//sp.setComponentZOrder(bdown,0);
//sp.setComponentZOrder(txt,1);
//sp.setComponentZOrder(bup,2);
//javax.swing.BoxLayout layout = new javax.swing.BoxLayout(sp, javax.swing.BoxLayout.LINE_AXIS);
/*
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(sp);
layout.setAutoCreateGaps(false);
layout.setHorizontalGroup(
layout.createSequentialGroup()
.addComponent(bdown, javax.swing.GroupLayout.PREFERRED_SIZE, bup.getPreferredSize().width, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txt, javax.swing.GroupLayout.DEFAULT_SIZE, txt.getPreferredSize().width, Short.MAX_VALUE)
.addComponent(bup, javax.swing.GroupLayout.PREFERRED_SIZE, bup.getPreferredSize().width, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(bdown, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txt, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(bup, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
sp.setLayout(layout);
*/
return true;
}
public static void setHorizontalSpinners(java.awt.Container container)
{
for (java.awt.Component c:container.getComponents())
{
if (c instanceof javax.swing.JSpinner)
setHorizontalSpinner((javax.swing.JSpinner)c);
else if (c instanceof java.awt.Container)
setHorizontalSpinners((java.awt.Container)c);
}
}
final Console console;
public Tomaz() {
initComponents();
console = new Console() {
protected void onConsoleCommand(String name, String[] pars, String trimming) throws Exception {
switch (name) {
case "test":
System.out.println("OK");
break;
}
}
};
setHorizontalSpinners(this);
setHorizontalSpinner(spinner);
}
@Override
public void onStart() {
super.onStart();
console.start();
}
@Override
public void onStop() {
super.onStart();
console.stop();
}
//Overridable callbacks
@Override
public void onInitialize(int runCount) {
}
@Override
public void onStateChange(State state, State former) {
}
@Override
public void onExecutedFile(String fileName, Object result) {
}
//Callback to perform update - in event thread
@Override
protected void doUpdate() {
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jButton1 = new javax.swing.JButton();
jSpinner1 = new javax.swing.JSpinner();
jSpinner2 = new javax.swing.JSpinner();
spinner = new javax.swing.JSpinner();
jButton1.setText("jButton1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jSpinner1.setModel(new javax.swing.SpinnerDateModel());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(66, 66, 66)
.addComponent(jButton1)
.addGap(117, 117, 117)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGap(48, 48, 48)
.addComponent(spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(31, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(16, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
//showSettingsEditor(false);
//showSettingsEditor(true);
Config cfg = new ProviderConfig();
try {
cfg.load("~/test.cfg");
} catch (IOException ex) {
Logger.getLogger(Tomaz.class.getName()).log(Level.SEVERE, null, ex);
}
showConfigEditor(cfg, true);
}//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JSpinner jSpinner1;
private javax.swing.JSpinner jSpinner2;
private javax.swing.JSpinner spinner;
// End of variables declaration//GEN-END:variables
}