package org.yamcs.ui.archivebrowser; import java.text.ParseException; import javax.swing.JFormattedTextField; import javax.swing.text.DefaultFormatter; import org.yamcs.utils.TimeEncoding; public class InstantFormat extends DefaultFormatter { private static final long serialVersionUID = 1L; public InstantFormat() { setOverwriteMode(false); } @Override public Object stringToValue(String s) throws ParseException { if(s==null || s.isEmpty()) return TimeEncoding.INVALID_INSTANT; try { return TimeEncoding.parse(s); } catch (IllegalArgumentException e) { throw new ParseException(e.getMessage(), 0); } } @Override public String valueToString(Object obj) throws ParseException { if(obj==null) return null; long instant=(Long)obj; if(instant!=TimeEncoding.INVALID_INSTANT) { return TimeEncoding.toString(instant); } else { return ""; } } @Override public void install(final JFormattedTextField ftf) { int savedCaretPos = ftf.getCaretPosition(); super.install(ftf); if(savedCaretPos<ftf.getText().length()) ftf.setCaretPosition(savedCaretPos); } }