* fixed visual issues with SeasonSpinnerEditor

This commit is contained in:
Reinhard Pointner 2009-04-05 21:20:54 +00:00
parent 4afc701ff7
commit 912bf0464f
1 changed files with 16 additions and 10 deletions

View File

@ -1,57 +1,63 @@
package net.sourceforge.filebot.ui.panel.episodelist;
import static net.sourceforge.filebot.ui.panel.episodelist.SeasonSpinnerModel.ALL_SEASONS;
import java.awt.Color;
import java.text.ParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JSpinner;
import javax.swing.SwingConstants;
import javax.swing.JSpinner.DefaultEditor;
import javax.swing.text.DefaultFormatter;
import javax.swing.text.DefaultFormatterFactory;
class SeasonSpinnerEditor extends DefaultEditor {
class SeasonSpinnerEditor extends DefaultEditor {
public SeasonSpinnerEditor(JSpinner spinner) {
super(spinner);
getTextField().setFormatterFactory(new DefaultFormatterFactory(new DefaultFormatter() {
@Override
public Object stringToValue(String string) throws ParseException {
if ("All Seasons".equals(string)) {
return ALL_SEASONS;
}
Matcher matcher = Pattern.compile("Season (\\d+)").matcher(string);
if (matcher.matches()) {
return Integer.valueOf(matcher.group(1));
}
// negative season number
throw new ParseException("Illegal season number", 0);
}
@Override
public String valueToString(Object value) throws ParseException {
int season = ((Number) value).intValue();
if (season == ALL_SEASONS)
return "All Seasons";
else if (season >= 1)
return String.format("Season %d", season);
// negative season number
throw new ParseException("Illegal season number", 0);
}
}));
getTextField().setBorder(BorderFactory.createEmptyBorder(1, 3, 1, 1));
getTextField().setHorizontalAlignment(SwingConstants.RIGHT);
getTextField().setBackground(Color.white);
}
}