Allow Season Year values in the Season spinner
This commit is contained in:
parent
db9dc0f9e9
commit
52d82489cb
|
@ -3,6 +3,7 @@ package net.filebot.ui.episodelist;
|
||||||
import static net.filebot.ui.episodelist.SeasonSpinnerModel.*;
|
import static net.filebot.ui.episodelist.SeasonSpinnerModel.*;
|
||||||
import static net.filebot.web.EpisodeUtilities.*;
|
import static net.filebot.web.EpisodeUtilities.*;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
import java.awt.datatransfer.Clipboard;
|
import java.awt.datatransfer.Clipboard;
|
||||||
import java.awt.datatransfer.StringSelection;
|
import java.awt.datatransfer.StringSelection;
|
||||||
import java.awt.datatransfer.Transferable;
|
import java.awt.datatransfer.Transferable;
|
||||||
|
@ -66,7 +67,9 @@ public class EpisodeListPanel extends AbstractSearchPanel<EpisodeListProvider, E
|
||||||
seasonSpinner.setEditor(new SeasonSpinnerEditor(seasonSpinner));
|
seasonSpinner.setEditor(new SeasonSpinnerEditor(seasonSpinner));
|
||||||
|
|
||||||
// set minimum size to "All Seasons" preferred size
|
// set minimum size to "All Seasons" preferred size
|
||||||
seasonSpinner.setMinimumSize(seasonSpinner.getPreferredSize());
|
Dimension d = seasonSpinner.getPreferredSize();
|
||||||
|
d.width += 12;
|
||||||
|
seasonSpinner.setMinimumSize(d);
|
||||||
|
|
||||||
// add after text field
|
// add after text field
|
||||||
add(seasonSpinner, "sgy button, gap indent", 1);
|
add(seasonSpinner, "sgy button, gap indent", 1);
|
||||||
|
|
|
@ -1,68 +1,61 @@
|
||||||
|
|
||||||
package net.filebot.ui.episodelist;
|
package net.filebot.ui.episodelist;
|
||||||
|
|
||||||
|
import static java.lang.Math.*;
|
||||||
|
import static java.util.Collections.*;
|
||||||
|
|
||||||
import javax.swing.SpinnerNumberModel;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
import javax.swing.SpinnerListModel;
|
||||||
|
|
||||||
class SeasonSpinnerModel extends SpinnerNumberModel {
|
class SeasonSpinnerModel extends SpinnerListModel {
|
||||||
|
|
||||||
public static final int ALL_SEASONS = 0;
|
public static final int ALL_SEASONS = 0;
|
||||||
|
|
||||||
public static final int MAX_VALUE = 99;
|
public static final int YEAR_SEASON_MIN_VALUE = 1990;
|
||||||
|
public static final int YEAR_SEASON_MAX_VALUE = 2100;
|
||||||
|
|
||||||
private Number valueBeforeLock = null;
|
public static final int SEASON_MIN_VALUE = 1;
|
||||||
|
public static final int SEASON_MAX_VALUE = 50;
|
||||||
|
|
||||||
|
public static List<Integer> getSeasonValues() {
|
||||||
|
IntStream values = IntStream.of(ALL_SEASONS);
|
||||||
|
values = IntStream.concat(values, IntStream.range(SEASON_MIN_VALUE, SEASON_MAX_VALUE));
|
||||||
|
values = IntStream.concat(values, IntStream.range(YEAR_SEASON_MIN_VALUE, YEAR_SEASON_MAX_VALUE));
|
||||||
|
return values.boxed().collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
public SeasonSpinnerModel() {
|
public SeasonSpinnerModel() {
|
||||||
super(ALL_SEASONS, ALL_SEASONS, MAX_VALUE, 1);
|
super(getSeasonValues());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public int getSeason() {
|
public int getSeason() {
|
||||||
return getNumber().intValue();
|
return ((Integer) getValue()).intValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer getMinimum() {
|
|
||||||
return (Integer) super.getMinimum();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer getMaximum() {
|
|
||||||
return (Integer) super.getMaximum();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void spin(int steps) {
|
public void spin(int steps) {
|
||||||
int next = getSeason() + steps;
|
for (int i = 0; i < abs(steps); i++) {
|
||||||
|
setValue(i < 0 ? getPreviousValue() : getNextValue());
|
||||||
if (next < getMinimum())
|
}
|
||||||
next = getMinimum();
|
|
||||||
else if (next > getMaximum())
|
|
||||||
next = getMaximum();
|
|
||||||
|
|
||||||
setValue(next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Object valueBeforeLock = null;
|
||||||
|
|
||||||
public void lock(int value) {
|
public void lock(int value) {
|
||||||
valueBeforeLock = getNumber();
|
valueBeforeLock = getValue();
|
||||||
setMinimum(value);
|
|
||||||
setMaximum(value);
|
setList(singletonList(ALL_SEASONS));
|
||||||
setValue(value);
|
setValue(ALL_SEASONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void unlock() {
|
public void unlock() {
|
||||||
setMinimum(ALL_SEASONS);
|
setList(getSeasonValues());
|
||||||
setMaximum(MAX_VALUE);
|
|
||||||
|
|
||||||
if (valueBeforeLock != null) {
|
if (valueBeforeLock != null) {
|
||||||
setValue(valueBeforeLock);
|
setValue(valueBeforeLock);
|
||||||
valueBeforeLock = null;
|
|
||||||
}
|
}
|
||||||
|
valueBeforeLock = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue