package org.yamcs.ui.archivebrowser; import org.yamcs.TimeInterval; import org.yamcs.ui.datepicker.DatePicker; import org.yamcs.utils.TimeEncoding; import javax.swing.*; import java.awt.*; import java.util.List; import java.util.prefs.Preferences; /* * Also used by CcsdsCompletessGui */ public class PrefsToolbar extends JPanel { private static final long serialVersionUID = 1L; private JComboBox instances; DatePicker datePicker; Preferences prefs; public JButton reloadButton; public PrefsToolbar() { super(new FlowLayout(FlowLayout.LEFT)); prefs = Preferences.userNodeForPackage(ArchivePanel.class); JLabel label; label = new JLabel("Archive Instance:"); add(label); instances = new JComboBox(); instances.setEditable(false); instances.setPreferredSize(new Dimension(100, instances.getPreferredSize().height)); instances.setMaximumSize(new Dimension(300, instances.getPreferredSize().height)); add(instances); add(new JSeparator(SwingConstants.VERTICAL)); label = new JLabel("Reload Range:"); add(label); datePicker=new DatePicker(); datePicker.setMaximumSize(datePicker.getPreferredSize()); add(datePicker); add(new JSeparator(SwingConstants.VERTICAL)); reloadButton = new JButton("Reload"); reloadButton.setActionCommand("reload"); reloadButton.setEnabled(false); add(reloadButton); loadFromPrefs(); } public void savePreferences() { prefs.put("instance", getInstance()); prefs.putLong("rangeStart", getStartTimestamp()); prefs.putLong("rangeEnd", getEndTimestamp()); } public TimeInterval getInterval() { return datePicker.getInterval(); } public long getEndTimestamp() { return datePicker.getEndTimestamp(); } public long getStartTimestamp() { return datePicker.getStartTimestamp(); } public void setInstances(List<String> archiveInstances) { instances.removeAllItems(); for (String item:archiveInstances) { instances.addItem(item); } String preferred=prefs.get("instance",archiveInstances.get(0)); if(archiveInstances.contains(preferred)) instances.setSelectedItem(preferred); } public void setVisiblePackets(Object[] packets) { StringBuffer strbuf = new StringBuffer(); for (Object s:packets) { strbuf.append(" "); strbuf.append(s.toString()); } prefs.put("packets", strbuf.toString().trim()); } void loadFromPrefs() { datePicker.setStartTimestamp(prefs.getLong("rangeStart", TimeEncoding.currentInstant()-30*24*3600)); datePicker.setEndTimestamp(prefs.getLong("rangeEnd", TimeEncoding.currentInstant())); } public String getInstance() { return (String) instances.getSelectedItem(); } public String[] getVisiblePackets() { String[] s = prefs.get("packets", "").split(" "); return s[0].equals("") ? new String[0] : s; } }