package magic.ui.screen.keywords;
import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.JPanel;
import javax.swing.Scrollable;
import net.miginfocom.swing.MigLayout;
/**
* A {@code Scrollable JPanel} that works better with
* {@code JScrollPane} than the standard {@code JPanel}.
* <p>
* This manages the layout and display of the list of {@code JTextArea} entries.
*/
@SuppressWarnings("serial")
class KeywordsScrollablePanel extends JPanel implements Scrollable {
KeywordsScrollablePanel() {
setLayout(new MigLayout("insets 10, gap 6 8, wrap 2"));
setOpaque(false);
refreshKeywords();
}
private void refreshKeywords() {
for (final Keyword keywordDefinition : KeywordsHelper.loadKeywordsFileToSortedArray()) {
add(new KeywordPanelA(keywordDefinition), "w 10:100%, top");
}
}
@Override
public Dimension getPreferredScrollableViewportSize() {
return getPreferredSize();
}
@Override
public int getScrollableUnitIncrement(final Rectangle visibleRect, final int orientation, final int direction) {
return getFont().getSize();
}
@Override
public int getScrollableBlockIncrement(final Rectangle visibleRect, final int orientation, final int direction) {
return getFont().getSize();
}
@Override
public boolean getScrollableTracksViewportWidth() {
return true;
}
// we don't want to track the height, because we want to scroll vertically.
@Override
public boolean getScrollableTracksViewportHeight() {
return false;
}
}