8077095: Fix missing doclint warnings in the javax.swing.plaf.basic package
Reviewed-by: serb
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicDirectoryModel.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -219,12 +219,14 @@
/**
* Obsolete - not used.
+ * @param e list data event
*/
public void intervalAdded(ListDataEvent e) {
}
/**
* Obsolete - not used.
+ * @param e list data event
*/
public void intervalRemoved(ListDataEvent e) {
}
@@ -238,7 +240,12 @@
ShellFolder.sort(v);
}
- // Obsolete - not used
+ /**
+ * Obsolete - not used
+ * @return a comparison of the file names
+ * @param a a file
+ * @param b another file
+ */
protected boolean lt(File a, File b) {
// First ignore case when comparing
int diff = a.getName().toLowerCase().compareTo(b.getName().toLowerCase());
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicFileChooserUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -50,23 +50,39 @@
public class BasicFileChooserUI extends FileChooserUI {
/* FileView icons */
+ /** Directory icon */
protected Icon directoryIcon = null;
+ /** File icon */
protected Icon fileIcon = null;
+ /** Computer icon */
protected Icon computerIcon = null;
+ /** Hard drive icon */
protected Icon hardDriveIcon = null;
+ /** Floppy drive icon */
protected Icon floppyDriveIcon = null;
+ /** New folder icon */
protected Icon newFolderIcon = null;
+ /** Up folder icon */
protected Icon upFolderIcon = null;
+ /** Home folder icon */
protected Icon homeFolderIcon = null;
+ /** List view icon */
protected Icon listViewIcon = null;
+ /** Details view icon */
protected Icon detailsViewIcon = null;
+ /** View menu icon */
protected Icon viewMenuIcon = null;
+ /** Save button mnemonic */
protected int saveButtonMnemonic = 0;
+ /** Open button mnemonic */
protected int openButtonMnemonic = 0;
+ /** Cancel button mnemonic */
protected int cancelButtonMnemonic = 0;
+ /** Update button mnemonic */
protected int updateButtonMnemonic = 0;
+ /** Help button mnemonic */
protected int helpButtonMnemonic = 0;
/**
@@ -77,10 +93,15 @@
*/
protected int directoryOpenButtonMnemonic = 0;
+ /** Save button text */
protected String saveButtonText = null;
+ /** Open button text */
protected String openButtonText = null;
+ /** Cancel button text */
protected String cancelButtonText = null;
+ /** Update button text */
protected String updateButtonText = null;
+ /** Help button text */
protected String helpButtonText = null;
/**
@@ -91,13 +112,20 @@
*/
protected String directoryOpenButtonText = null;
+ /** Open dialog title text */
private String openDialogTitleText = null;
+ /** Save dialog title text */
private String saveDialogTitleText = null;
+ /** Save button tool tip text */
protected String saveButtonToolTipText = null;
+ /** Open button tool tip text */
protected String openButtonToolTipText = null;
+ /** Cancel button tool tip text */
protected String cancelButtonToolTipText = null;
+ /** Update button tool tip text */
protected String updateButtonToolTipText = null;
+ /** Help button tool tip text */
protected String helpButtonToolTipText = null;
/**
@@ -158,9 +186,17 @@
return new BasicFileChooserUI((JFileChooser) c);
}
+ /**
+ * Constructs a {@code BasicFileChooserUI}.
+ * @param b file chooser
+ */
public BasicFileChooserUI(JFileChooser b) {
}
+ /**
+ * Installs the UI.
+ * @param c the component
+ */
public void installUI(JComponent c) {
accessoryPanel = new JPanel(new BorderLayout());
filechooser = (JFileChooser) c;
@@ -175,6 +211,10 @@
filechooser.applyComponentOrientation(filechooser.getComponentOrientation());
}
+ /**
+ * Uninstalls the UI.
+ * @param c the component
+ */
public void uninstallUI(JComponent c) {
uninstallListeners(filechooser);
uninstallComponents(filechooser);
@@ -190,12 +230,24 @@
handler = null;
}
+ /**
+ * Installs the components.
+ * @param fc the file chooser
+ */
public void installComponents(JFileChooser fc) {
}
+ /**
+ * Uninstalls the components.
+ * @param fc the file chooser
+ */
public void uninstallComponents(JFileChooser fc) {
}
+ /**
+ * Installs the listeners.
+ * @param fc the file chooser
+ */
protected void installListeners(JFileChooser fc) {
propertyChangeListener = createPropertyChangeListener(fc);
if(propertyChangeListener != null) {
@@ -241,6 +293,10 @@
}
+ /**
+ * Uninstalls the listeners.
+ * @param fc the file chooser
+ */
protected void uninstallListeners(JFileChooser fc) {
if(propertyChangeListener != null) {
fc.removePropertyChangeListener(propertyChangeListener);
@@ -252,6 +308,10 @@
}
+ /**
+ * Installs the defaults.
+ * @param fc the file chooser
+ */
protected void installDefaults(JFileChooser fc) {
installIcons(fc);
installStrings(fc);
@@ -264,6 +324,10 @@
LookAndFeel.installProperty(fc, "opaque", Boolean.FALSE);
}
+ /**
+ * Installs the icons.
+ * @param fc the file chooser
+ */
protected void installIcons(JFileChooser fc) {
directoryIcon = UIManager.getIcon("FileView.directoryIcon");
fileIcon = UIManager.getIcon("FileView.fileIcon");
@@ -279,6 +343,10 @@
viewMenuIcon = UIManager.getIcon("FileChooser.viewMenuIcon");
}
+ /**
+ * Installs the strings.
+ * @param fc the file chooser
+ */
protected void installStrings(JFileChooser fc) {
Locale l = fc.getLocale();
@@ -315,6 +383,10 @@
directoryOpenButtonToolTipText = UIManager.getString("FileChooser.directoryOpenButtonToolTipText",l);
}
+ /**
+ * Uninstalls the defaults.
+ * @param fc the file chooser
+ */
protected void uninstallDefaults(JFileChooser fc) {
uninstallIcons(fc);
uninstallStrings(fc);
@@ -323,6 +395,10 @@
}
}
+ /**
+ * Uninstalls the icons.
+ * @param fc the file chooser
+ */
protected void uninstallIcons(JFileChooser fc) {
directoryIcon = null;
fileIcon = null;
@@ -338,6 +414,10 @@
viewMenuIcon = null;
}
+ /**
+ * Uninstalls the strings.
+ * @param fc the file chooser
+ */
protected void uninstallStrings(JFileChooser fc) {
saveButtonText = null;
openButtonText = null;
@@ -354,6 +434,9 @@
directoryOpenButtonToolTipText = null;
}
+ /**
+ * Creates the model.
+ */
protected void createModel() {
if (model != null) {
model.invalidateFileCache();
@@ -361,50 +444,102 @@
model = new BasicDirectoryModel(getFileChooser());
}
+ /**
+ * Returns the model.
+ * @return the model
+ */
public BasicDirectoryModel getModel() {
return model;
}
+ /**
+ * Creates the property change listener.
+ * @param fc the file chooser
+ * @return the property change listener
+ */
public PropertyChangeListener createPropertyChangeListener(JFileChooser fc) {
return null;
}
+ /**
+ * Returns the file name.
+ * @return the file name
+ */
public String getFileName() {
return null;
}
+ /**
+ * Returns the directory name.
+ * @return the directory name
+ */
public String getDirectoryName() {
return null;
}
+ /**
+ * Sets the file name.
+ * @param filename the file name
+ */
public void setFileName(String filename) {
}
+ /**
+ * Sets the directory name.
+ * @param dirname the file name
+ */
public void setDirectoryName(String dirname) {
}
+ /**
+ * {@inheritDoc}
+ */
public void rescanCurrentDirectory(JFileChooser fc) {
}
+ /**
+ * {@inheritDoc}
+ */
public void ensureFileIsVisible(JFileChooser fc, File f) {
}
+ /**
+ * Returns the file chooser.
+ * @return the file chooser
+ */
public JFileChooser getFileChooser() {
return filechooser;
}
+ /**
+ * Returns the accessory panel.
+ * @return the accessory panel
+ */
public JPanel getAccessoryPanel() {
return accessoryPanel;
}
+ /**
+ * Returns the approve button.
+ * @param fc the file chooser
+ * @return the approve button
+ */
protected JButton getApproveButton(JFileChooser fc) {
return null;
}
+ /**
+ * {@inheritDoc}
+ */
public JButton getDefaultButton(JFileChooser fc) {
return getApproveButton(fc);
}
+ /**
+ * Returns the approve button tool tip.
+ * @param fc the file chooser
+ * @return the approve button tool tip
+ */
public String getApproveButtonToolTipText(JFileChooser fc) {
String tooltipText = fc.getApproveButtonToolTipText();
if(tooltipText != null) {
@@ -419,6 +554,9 @@
return null;
}
+ /**
+ * Clears the icon cache.
+ */
public void clearIconCache() {
fileView.clearIconCache();
}
@@ -435,11 +573,22 @@
return handler;
}
+ /**
+ * Creates a double click listener.
+ * @param fc the file chooser
+ * @param list the list
+ * @return a double click listener
+ */
protected MouseListener createDoubleClickListener(JFileChooser fc,
JList<?> list) {
return new Handler(list);
}
+ /**
+ * Creates a list selection listener.
+ * @param fc the file chooser
+ * @return a list selection listener
+ */
public ListSelectionListener createListSelectionListener(JFileChooser fc) {
return getHandler();
}
@@ -566,12 +715,19 @@
}
}
+ /**
+ * A double click listener.
+ */
protected class DoubleClickListener extends MouseAdapter {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
Handler handler;
+ /**
+ * Constucts a {@code DoubleClickListener}.
+ * @param list the lsit
+ */
public DoubleClickListener(JList<?> list) {
handler = new Handler(list);
}
@@ -587,16 +743,21 @@
handler.mouseEntered(e);
}
+ /** {@inheritDoc} */
public void mouseClicked(MouseEvent e) {
handler.mouseClicked(e);
}
}
+ /**
+ * A selection listener.
+ */
protected class SelectionListener implements ListSelectionListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /** {@inheritDoc} */
public void valueChanged(ListSelectionEvent e) {
getHandler().valueChanged(e);
}
@@ -672,6 +833,8 @@
/**
* Returns the title of this dialog
+ * @param fc the file chooser
+ * @return the title of this dialog
*/
public String getDialogTitle(JFileChooser fc) {
String dialogTitle = fc.getDialogTitle();
@@ -686,7 +849,11 @@
}
}
-
+ /**
+ * Returns the approve button mnemonic.
+ * @param fc the file chooser
+ * @return the approve button mnemonic
+ */
public int getApproveButtonMnemonic(JFileChooser fc) {
int mnemonic = fc.getApproveButtonMnemonic();
if (mnemonic > 0) {
@@ -700,6 +867,7 @@
}
}
+ /** {@inheritDoc} */
public String getApproveButtonText(JFileChooser fc) {
String buttonText = fc.getApproveButtonText();
if (buttonText != null) {
@@ -718,6 +886,10 @@
// ***** Directory Actions *****
// *****************************
+ /**
+ * Returns a new folder action.
+ * @return a new folder action
+ */
public Action getNewFolderAction() {
if (newFolderAction == null) {
newFolderAction = new NewFolderAction();
@@ -730,22 +902,42 @@
return newFolderAction;
}
+ /**
+ * Returns a go home action.
+ * @return a go home action
+ */
public Action getGoHomeAction() {
return goHomeAction;
}
+ /**
+ * Returns a change to parent directory action.
+ * @return a change to parent directory action
+ */
public Action getChangeToParentDirectoryAction() {
return changeToParentDirectoryAction;
}
+ /**
+ * Returns an approve selection action.
+ * @return an approve selection action
+ */
public Action getApproveSelectionAction() {
return approveSelectionAction;
}
+ /**
+ * Returns a cancel selection action.
+ * @return a cancel selection action
+ */
public Action getCancelSelectionAction() {
return cancelSelectionAction;
}
+ /**
+ * Returns an update action.
+ * @return an update action
+ */
public Action getUpdateAction() {
return updateAction;
}
@@ -756,9 +948,11 @@
*/
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class NewFolderAction extends AbstractAction {
+ /** Constructs a {@code NewFolderAction}. */
protected NewFolderAction() {
super(FilePane.ACTION_NEW_FOLDER);
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
if (readOnly) {
return;
@@ -799,6 +993,7 @@
*/
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class GoHomeAction extends AbstractAction {
+ /** Constructs a {@code GoHomeAction}. */
protected GoHomeAction() {
super("Go Home");
}
@@ -808,12 +1003,17 @@
}
}
+ /**
+ * Change to parent directory action.
+ */
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class ChangeToParentDirectoryAction extends AbstractAction {
+ /** Constructs a {@code ChangeToParentDirectoryAction}. */
protected ChangeToParentDirectoryAction() {
super("Go Up");
putValue(Action.ACTION_COMMAND_KEY, FilePane.ACTION_CHANGE_TO_PARENT_DIRECTORY);
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
getFileChooser().changeToParentDirectory();
}
@@ -824,9 +1024,11 @@
*/
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class ApproveSelectionAction extends AbstractAction {
+ /** Constructs an {@code ApproveSelectionAction}. */
protected ApproveSelectionAction() {
super(FilePane.ACTION_APPROVE_SELECTION);
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
if (isDirectorySelected()) {
File dir = getDirectory();
@@ -1133,6 +1335,7 @@
*/
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class CancelSelectionAction extends AbstractAction {
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
getFileChooser().cancelSelection();
}
@@ -1143,6 +1346,7 @@
*/
@SuppressWarnings("serial") // Superclass is not serializable across versions
protected class UpdateAction extends AbstractAction {
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
JFileChooser fc = getFileChooser();
fc.setCurrentDirectory(fc.getFileSystemView().createFileObject(getDirectoryName()));
@@ -1188,15 +1392,27 @@
// *****************************************
// ***** default AcceptAll file filter *****
// *****************************************
+ /**
+ * Accept all file filter.
+ */
protected class AcceptAllFileFilter extends FileFilter {
+ /** Constructs an {@code AcceptAllFileFilter}. */
public AcceptAllFileFilter() {
}
+ /**
+ * Returns true.
+ * @param f the file
+ * @return true
+ */
public boolean accept(File f) {
return true;
}
+ /**
+ * {@inheritDoc}
+ */
public String getDescription() {
return UIManager.getString("FileChooser.acceptAllFileFilterText");
}
@@ -1206,18 +1422,26 @@
// ***********************
// * FileView operations *
// ***********************
+ /**
+ * A basic file view.
+ */
protected class BasicFileView extends FileView {
/* FileView type descriptions */
- // PENDING(jeff) - pass in the icon cache size
+ /** The icon cache */
protected Hashtable<File,Icon> iconCache = new Hashtable<File,Icon>();
+ /** Constructs a {@code BasicFileView}. */
public BasicFileView() {
}
+ /**
+ * Clears the icon cache.
+ */
public void clearIconCache() {
iconCache = new Hashtable<File,Icon>();
}
+ /** {@inheritDoc} */
public String getName(File f) {
// Note: Returns display name rather than file name
String fileName = null;
@@ -1227,11 +1451,12 @@
return fileName;
}
-
+ /** {@inheritDoc} */
public String getDescription(File f) {
return f.getName();
}
+ /** {@inheritDoc} */
public String getTypeDescription(File f) {
String type = getFileChooser().getFileSystemView().getSystemTypeDescription(f);
if (type == null) {
@@ -1244,10 +1469,20 @@
return type;
}
+ /**
+ * Returns the cached icon for the file.
+ * @param f the file
+ * @return the cached icon for the file
+ */
public Icon getCachedIcon(File f) {
return iconCache.get(f);
}
+ /**
+ * Caches an icon for a file.
+ * @param f the file
+ * @param i the icon
+ */
public void cacheIcon(File f, Icon i) {
if(f == null || i == null) {
return;
@@ -1255,6 +1490,7 @@
iconCache.put(f, i);
}
+ /** {@inheritDoc} */
public Icon getIcon(File f) {
Icon icon = getCachedIcon(f);
if(icon != null) {
@@ -1278,6 +1514,11 @@
return icon;
}
+ /**
+ * Returns whether or not a file is hidden.
+ * @param f the file
+ * @return whether or not a file is hidden
+ */
public Boolean isHidden(File f) {
String name = f.getName();
if(name != null && name.charAt(0) == '.') {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicInternalFrameUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -42,22 +42,31 @@
*/
public class BasicInternalFrameUI extends InternalFrameUI
{
-
+ /** frame */
protected JInternalFrame frame;
private Handler handler;
+ /** Border listener */
protected MouseInputAdapter borderListener;
+ /** Property change listener */
protected PropertyChangeListener propertyChangeListener;
+ /** Internal frame layout */
protected LayoutManager internalFrameLayout;
+ /** Component listener */
protected ComponentListener componentListener;
+ /** Glass pane dispatcher */
protected MouseInputListener glassPaneDispatcher;
private InternalFrameListener internalFrameListener;
+ /** North pane */
protected JComponent northPane;
+ /** South pane */
protected JComponent southPane;
+ /** West pane */
protected JComponent westPane;
+ /** East pane */
protected JComponent eastPane;
-
+ /** Title pane */
protected BasicInternalFrameTitlePane titlePane; // access needs this
private static DesktopManager sharedDesktopManager;
@@ -85,10 +94,19 @@
/////////////////////////////////////////////////////////////////////////////
// ComponentUI Interface Implementation methods
/////////////////////////////////////////////////////////////////////////////
+ /**
+ * Returns a component UI.
+ * @param b a component
+ * @return a component UI
+ */
public static ComponentUI createUI(JComponent b) {
return new BasicInternalFrameUI((JInternalFrame)b);
}
+ /**
+ * Constructs a {@code BasicInternalFrameUI}.
+ * @param b the internal frame
+ */
public BasicInternalFrameUI(JInternalFrame b) {
LookAndFeel laf = UIManager.getLookAndFeel();
if (laf instanceof BasicLookAndFeel) {
@@ -96,6 +114,10 @@
}
}
+ /**
+ * Installs the UI.
+ * @param c the component
+ */
public void installUI(JComponent c) {
frame = (JInternalFrame)c;
@@ -108,6 +130,10 @@
LookAndFeel.installProperty(frame, "opaque", Boolean.TRUE);
}
+ /**
+ * Uninstalls the UI.
+ * @param c the component
+ */
public void uninstallUI(JComponent c) {
if(c != frame)
throw new IllegalComponentStateException(
@@ -124,6 +150,9 @@
frame = null;
}
+ /**
+ * Installs the defaults.
+ */
protected void installDefaults(){
Icon frameIcon = frame.getFrameIcon();
if (frameIcon == null || frameIcon instanceof UIResource) {
@@ -144,6 +173,9 @@
LookAndFeel.installBorder(frame, "InternalFrame.border");
}
+ /**
+ * Installs the keyboard actions.
+ */
protected void installKeyboardActions(){
createInternalFrameListener();
if (internalFrameListener != null) {
@@ -184,6 +216,9 @@
BasicLookAndFeel.installAudioActionMap(map);
}
+ /**
+ * Installs the components.
+ */
protected void installComponents(){
setNorthPane(createNorthPane(frame));
setSouthPane(createSouthPane(frame));
@@ -192,6 +227,7 @@
}
/**
+ * Installs the listeners.
* @since 1.3
*/
protected void installListeners() {
@@ -257,6 +293,9 @@
return null;
}
+ /**
+ * Uninstalls the defaults.
+ */
protected void uninstallDefaults() {
Icon frameIcon = frame.getFrameIcon();
if (frameIcon instanceof UIResource) {
@@ -267,6 +306,9 @@
LookAndFeel.uninstallBorder(frame);
}
+ /**
+ * Uninstalls the components.
+ */
protected void uninstallComponents(){
setNorthPane(null);
setSouthPane(null);
@@ -279,6 +321,7 @@
}
/**
+ * Uninstalls the listeners.
* @since 1.3
*/
protected void uninstallListeners() {
@@ -298,6 +341,9 @@
borderListener = null;
}
+ /**
+ * Uninstalls the keyboard actions.
+ */
protected void uninstallKeyboardActions(){
if (internalFrameListener != null) {
frame.removeInternalFrameListener(internalFrameListener);
@@ -321,22 +367,38 @@
frame.setCursor(s);
}
+ /**
+ * Creates the layout manager.
+ * @return the layout manager
+ */
protected LayoutManager createLayoutManager(){
return getHandler();
}
+ /**
+ * Creates the property change listener.
+ * @return the property change listener
+ */
protected PropertyChangeListener createPropertyChangeListener(){
return getHandler();
}
-
-
+ /**
+ * Returns the preferred size.
+ * @param x the component
+ * @return the preferred size
+ */
public Dimension getPreferredSize(JComponent x) {
if(frame == x)
return frame.getLayout().preferredLayoutSize(x);
return new Dimension(100, 100);
}
+ /**
+ * Returns the minimum size.
+ * @param x the component
+ * @return the minimum size
+ */
public Dimension getMinimumSize(JComponent x) {
if(frame == x) {
return frame.getLayout().minimumLayoutSize(x);
@@ -344,6 +406,11 @@
return new Dimension(0, 0);
}
+ /**
+ * Returns the maximum size.
+ * @param x the component
+ * @return the maximum size
+ */
public Dimension getMaximumSize(JComponent x) {
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
@@ -371,60 +438,114 @@
}
}
+ /**
+ * Deinstalls the mouse handlers.
+ * @param c the component
+ */
protected void deinstallMouseHandlers(JComponent c) {
c.removeMouseListener(borderListener);
c.removeMouseMotionListener(borderListener);
}
+ /**
+ * Installs the mouse handlers.
+ * @param c the component
+ */
protected void installMouseHandlers(JComponent c) {
c.addMouseListener(borderListener);
c.addMouseMotionListener(borderListener);
}
+ /**
+ * Creates the north pane.
+ * @param w the internal frame
+ * @return the north pane
+ */
protected JComponent createNorthPane(JInternalFrame w) {
titlePane = new BasicInternalFrameTitlePane(w);
return titlePane;
}
+ /**
+ * Creates the north pane.
+ * @param w the internal frame
+ * @return the north pane
+ */
protected JComponent createSouthPane(JInternalFrame w) {
return null;
}
+ /**
+ * Creates the west pane.
+ * @param w the internal frame
+ * @return the west pane
+ */
protected JComponent createWestPane(JInternalFrame w) {
return null;
}
+ /**
+ * Creates the east pane.
+ * @param w the internal frame
+ * @return the east pane
+ */
protected JComponent createEastPane(JInternalFrame w) {
return null;
}
-
+ /**
+ * Creates the border listener.
+ * @param w the internal frame
+ * @return the border listener
+ */
protected MouseInputAdapter createBorderListener(JInternalFrame w) {
return new BorderListener();
}
+ /**
+ * Creates the internal frame listener.
+ */
protected void createInternalFrameListener(){
internalFrameListener = getHandler();
}
+ /**
+ * Returns whether or no the key binding is registered.
+ * @return whether or no the key binding is registered
+ */
protected final boolean isKeyBindingRegistered(){
return keyBindingRegistered;
}
+ /**
+ * Sets the key binding registration.
+ * @param b new value for key binding registration
+ */
protected final void setKeyBindingRegistered(boolean b){
keyBindingRegistered = b;
}
+ /**
+ * Returns whether or no the key binding is active.
+ * @return whether or no the key binding is active
+ */
public final boolean isKeyBindingActive(){
return keyBindingActive;
}
+ /**
+ * Sets the key binding activity.
+ * @param b new value for key binding activity
+ */
protected final void setKeyBindingActive(boolean b){
keyBindingActive = b;
}
+ /**
+ * Setup the menu open key.
+ */
protected void setupMenuOpenKey(){
// PENDING(hania): Why are these WHEN_IN_FOCUSED_WINDOWs? Shouldn't
// they be WHEN_ANCESTOR_OF_FOCUSED_COMPONENT?
@@ -437,13 +558,24 @@
//SwingUtilities.replaceUIActionMap(frame, actionMap);
}
+ /**
+ * Setup the menu close key.
+ */
protected void setupMenuCloseKey(){
}
+ /**
+ * Returns the north pane.
+ * @return the north pane
+ */
public JComponent getNorthPane() {
return northPane;
}
+ /**
+ * Sets the north pane.
+ * @param c the new north pane
+ */
public void setNorthPane(JComponent c) {
if (northPane != null &&
northPane instanceof BasicInternalFrameTitlePane) {
@@ -456,30 +588,57 @@
}
}
+ /**
+ * Returns the south pane.
+ * @return the south pane
+ */
public JComponent getSouthPane() {
return southPane;
}
+ /**
+ * Sets the south pane.
+ * @param c the new south pane
+ */
public void setSouthPane(JComponent c) {
southPane = c;
}
+ /**
+ * Returns the west pane.
+ * @return the west pane
+ */
public JComponent getWestPane() {
return westPane;
}
+ /**
+ * Sets the west pane.
+ * @param c the new west pane
+ */
public void setWestPane(JComponent c) {
westPane = c;
}
+ /**
+ * Returns the east pane.
+ * @return the east pane
+ */
public JComponent getEastPane() {
return eastPane;
}
+ /**
+ * Sets the east pane.
+ * @param c the new east pane
+ */
public void setEastPane(JComponent c) {
eastPane = c;
}
+ /**
+ * Internal frame property change listener.
+ */
public class InternalFramePropertyChangeListener implements
PropertyChangeListener {
// NOTE: This class exists only for backward compatibility. All
@@ -495,27 +654,45 @@
}
}
+ /**
+ * Internal frame layout.
+ */
public class InternalFrameLayout implements LayoutManager {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /**
+ * {@inheritDoc}
+ */
public void addLayoutComponent(String name, Component c) {
getHandler().addLayoutComponent(name, c);
}
+ /**
+ * {@inheritDoc}
+ */
public void removeLayoutComponent(Component c) {
getHandler().removeLayoutComponent(c);
}
+ /**
+ * {@inheritDoc}
+ */
public Dimension preferredLayoutSize(Container c) {
return getHandler().preferredLayoutSize(c);
}
+ /**
+ * {@inheritDoc}
+ */
public Dimension minimumLayoutSize(Container c) {
return getHandler().minimumLayoutSize(c);
}
+ /**
+ * {@inheritDoc}
+ */
public void layoutContainer(Container c) {
getHandler().layoutContainer(c);
}
@@ -527,6 +704,7 @@
* find the JDesktop component and returns the desktopManager from
* it. If this fails, it will return a default DesktopManager that
* should work in arbitrary parents.
+ * @return the proper DesktopManager
*/
protected DesktopManager getDesktopManager() {
if(frame.getDesktopPane() != null
@@ -537,6 +715,10 @@
return sharedDesktopManager;
}
+ /**
+ * Creates the desktop manager.
+ * @return the desktop manager
+ */
protected DesktopManager createDesktopManager(){
return new DefaultDesktopManager();
}
@@ -653,7 +835,7 @@
Rectangle startingBounds;
int resizeDir;
-
+ /** resize none */
protected final int RESIZE_NONE = 0;
private boolean discardRelease = false;
@@ -1114,6 +1296,9 @@
} /// End BorderListener Class
+ /**
+ * Component handler.
+ */
protected class ComponentHandler implements ComponentListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
@@ -1124,92 +1309,155 @@
getHandler().componentResized(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void componentMoved(ComponentEvent e) {
getHandler().componentMoved(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void componentShown(ComponentEvent e) {
getHandler().componentShown(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void componentHidden(ComponentEvent e) {
getHandler().componentHidden(e);
}
}
+ /**
+ * Creates a component listener.
+ * @return a component listener
+ */
protected ComponentListener createComponentListener() {
return getHandler();
}
+ /**
+ * Glass pane dispatcher.
+ */
protected class GlassPaneDispatcher implements MouseInputListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /**
+ * {@inheritDoc}
+ */
public void mousePressed(MouseEvent e) {
getHandler().mousePressed(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseEntered(MouseEvent e) {
getHandler().mouseEntered(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseMoved(MouseEvent e) {
getHandler().mouseMoved(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseExited(MouseEvent e) {
getHandler().mouseExited(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseClicked(MouseEvent e) {
getHandler().mouseClicked(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseReleased(MouseEvent e) {
getHandler().mouseReleased(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void mouseDragged(MouseEvent e) {
getHandler().mouseDragged(e);
}
}
+ /**
+ * Creates a {@code GlassPaneDispatcher}.
+ * @return a {@code GlassPaneDispatcher}
+ */
protected MouseInputListener createGlassPaneDispatcher() {
return null;
}
-
+ /**
+ * Basic internal frame listener.
+ */
protected class BasicInternalFrameListener implements InternalFrameListener
{
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameClosing(InternalFrameEvent e) {
getHandler().internalFrameClosing(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameClosed(InternalFrameEvent e) {
getHandler().internalFrameClosed(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameOpened(InternalFrameEvent e) {
getHandler().internalFrameOpened(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameIconified(InternalFrameEvent e) {
getHandler().internalFrameIconified(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameDeiconified(InternalFrameEvent e) {
getHandler().internalFrameDeiconified(e);
}
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameActivated(InternalFrameEvent e) {
getHandler().internalFrameActivated(e);
}
-
+ /**
+ * {@inheritDoc}
+ */
public void internalFrameDeactivated(InternalFrameEvent e) {
getHandler().internalFrameDeactivated(e);
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicMenuItemUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -875,30 +875,38 @@
if (dumpStack == true)
Thread.dumpStack();
}
+ /** Mouse input handler */
protected class MouseInputHandler implements MouseInputListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /** {@inheritDoc} */
public void mouseClicked(MouseEvent e) {
getHandler().mouseClicked(e);
}
+ /** {@inheritDoc} */
public void mousePressed(MouseEvent e) {
getHandler().mousePressed(e);
}
+ /** {@inheritDoc} */
public void mouseReleased(MouseEvent e) {
getHandler().mouseReleased(e);
}
+ /** {@inheritDoc} */
public void mouseEntered(MouseEvent e) {
getHandler().mouseEntered(e);
}
+ /** {@inheritDoc} */
public void mouseExited(MouseEvent e) {
getHandler().mouseExited(e);
}
+ /** {@inheritDoc} */
public void mouseDragged(MouseEvent e) {
getHandler().mouseDragged(e);
}
+ /** {@inheritDoc} */
public void mouseMoved(MouseEvent e) {
getHandler().mouseMoved(e);
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicOptionPaneUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -136,7 +136,7 @@
/**
* Creates a new {@code BasicOptionPaneUI} instance.
- *
+ * @param x the component
* @return a new {@code BasicOptionPaneUI} instance
*/
public static ComponentUI createUI(JComponent x) {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollBarUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -60,35 +60,59 @@
// NOTE: DO NOT use this field directly, SynthScrollBarUI assumes you'll
// call getMinimumThumbSize to access it.
+ /** Minimum thumb size */
protected Dimension minimumThumbSize;
+ /** Maximum thumb size */
protected Dimension maximumThumbSize;
+ /** Thumb highlight color */
protected Color thumbHighlightColor;
+ /** Thumb light shadow color */
protected Color thumbLightShadowColor;
+ /** Thumb dark shadow color */
protected Color thumbDarkShadowColor;
+ /** Thumb color */
protected Color thumbColor;
+ /** Track color */
protected Color trackColor;
+ /** Track highlight color */
protected Color trackHighlightColor;
+ /** Scrollbar */
protected JScrollBar scrollbar;
+ /** Increment button */
protected JButton incrButton;
+ /** Decrement button */
protected JButton decrButton;
+ /** Dragging */
protected boolean isDragging;
+ /** Track listener */
protected TrackListener trackListener;
+ /** Button listener */
protected ArrowButtonListener buttonListener;
+ /** Model listener */
protected ModelListener modelListener;
+ /** Thumb rectangle */
protected Rectangle thumbRect;
+ /** Track rectangle */
protected Rectangle trackRect;
+ /** Track highlight */
protected int trackHighlight;
+ /** No highlight */
protected static final int NO_HIGHLIGHT = 0;
+ /** Decrease highlight */
protected static final int DECREASE_HIGHLIGHT = 1;
+ /** Increase highlight */
protected static final int INCREASE_HIGHLIGHT = 2;
+ /** Scroll listener */
protected ScrollListener scrollListener;
+ /** Property change listener */
protected PropertyChangeListener propertyChangeListener;
+ /** Scroll timer */
protected Timer scrollTimer;
private final static int scrollSpeedThrottle = 60; // delay in milli seconds
@@ -148,12 +172,18 @@
map.put(new Actions(Actions.MAX_SCROLL));
}
-
+ /**
+ * Creates the UI.
+ * @param c the component
+ * @return the UI
+ */
public static ComponentUI createUI(JComponent c) {
return new BasicScrollBarUI();
}
-
+ /**
+ * Configures the scroll bar colors.
+ */
protected void configureScrollBarColors()
{
LookAndFeel.installColors(scrollbar, "ScrollBar.background",
@@ -166,7 +196,10 @@
trackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
}
-
+ /**
+ * Installs the UI.
+ * @param c the component
+ */
public void installUI(JComponent c) {
scrollbar = (JScrollBar)c;
thumbRect = new Rectangle(0, 0, 0, 0);
@@ -177,6 +210,10 @@
installKeyboardActions();
}
+ /**
+ * Uninstalls the UI.
+ * @param c the component
+ */
public void uninstallUI(JComponent c) {
scrollbar = (JScrollBar)c;
uninstallListeners();
@@ -189,7 +226,9 @@
decrButton = null;
}
-
+ /**
+ * Installs the defaults.
+ */
protected void installDefaults()
{
scrollBarWidth = UIManager.getInt("ScrollBar.width");
@@ -240,7 +279,9 @@
}
}
-
+ /**
+ * Installs the components.
+ */
protected void installComponents(){
switch (scrollbar.getOrientation()) {
case JScrollBar.VERTICAL:
@@ -264,12 +305,17 @@
scrollbar.setEnabled(scrollbar.isEnabled());
}
+ /**
+ * Uninstalls the components.
+ */
protected void uninstallComponents(){
scrollbar.remove(incrButton);
scrollbar.remove(decrButton);
}
-
+ /**
+ * Installs the listeners.
+ */
protected void installListeners(){
trackListener = createTrackListener();
buttonListener = createArrowButtonListener();
@@ -294,7 +340,9 @@
scrollTimer.setInitialDelay(300); // default InitialDelay?
}
-
+ /**
+ * Installs the keyboard actions.
+ */
protected void installKeyboardActions(){
LazyActionMap.installLazyActionMap(scrollbar, BasicScrollBarUI.class,
"ScrollBar.actionMap");
@@ -307,6 +355,9 @@
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, inputMap);
}
+ /**
+ * Uninstalls the keyboard actions.
+ */
protected void uninstallKeyboardActions(){
SwingUtilities.replaceUIInputMap(scrollbar, JComponent.WHEN_FOCUSED,
null);
@@ -343,7 +394,9 @@
return null;
}
-
+ /**
+ * Uninstall the listeners.
+ */
protected void uninstallListeners() {
scrollTimer.stop();
scrollTimer = null;
@@ -363,7 +416,9 @@
handler = null;
}
-
+ /**
+ * Uninstalls the defaults.
+ */
protected void uninstallDefaults(){
LookAndFeel.uninstallBorder(scrollbar);
if (scrollbar.getLayout() == this) {
@@ -379,22 +434,42 @@
return handler;
}
+ /**
+ * Creates a track listener.
+ * @return a track listener
+ */
protected TrackListener createTrackListener(){
return new TrackListener();
}
+ /**
+ * Creates an arrow button listener.
+ * @return an arrow button listener
+ */
protected ArrowButtonListener createArrowButtonListener(){
return new ArrowButtonListener();
}
+ /**
+ * Creates a model listener.
+ * @return a model listener
+ */
protected ModelListener createModelListener(){
return new ModelListener();
}
+ /**
+ * Creates a scroll listener.
+ * @return a scroll listener
+ */
protected ScrollListener createScrollListener(){
return new ScrollListener();
}
+ /**
+ * Creates a property change listener.
+ * @return a property change listener
+ */
protected PropertyChangeListener createPropertyChangeListener() {
return getHandler();
}
@@ -470,6 +545,11 @@
return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
}
+ /**
+ * Creates a decrease button.
+ * @param orientation the orientation
+ * @return a decrease button
+ */
protected JButton createDecreaseButton(int orientation) {
return new BasicArrowButton(orientation,
UIManager.getColor("ScrollBar.thumb"),
@@ -478,6 +558,11 @@
UIManager.getColor("ScrollBar.thumbHighlight"));
}
+ /**
+ * Creates an increase button.
+ * @param orientation the orientation
+ * @return an increase button
+ */
protected JButton createIncreaseButton(int orientation) {
return new BasicArrowButton(orientation,
UIManager.getColor("ScrollBar.thumb"),
@@ -487,6 +572,10 @@
}
+ /**
+ * Paints the decrease highlight.
+ * @param g the graphics
+ */
protected void paintDecreaseHighlight(Graphics g)
{
Insets insets = scrollbar.getInsets();
@@ -519,6 +608,10 @@
}
+ /**
+ * Paints the increase highlight.
+ * @param g the graphics
+ */
protected void paintIncreaseHighlight(Graphics g)
{
Insets insets = scrollbar.getInsets();
@@ -552,6 +645,12 @@
}
+ /**
+ * Paints the track.
+ * @param g the graphics
+ * @param c the component
+ * @param trackBounds the track bounds
+ */
protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds)
{
g.setColor(trackColor);
@@ -565,7 +664,12 @@
}
}
-
+ /**
+ * Paints the thumb.
+ * @param g the graphics
+ * @param c the component
+ * @param thumbBounds the thumb bounds
+ */
protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)
{
if(thumbBounds.isEmpty() || !scrollbar.isEnabled()) {
@@ -644,6 +748,10 @@
return (useCachedValue) ? scrollBarValue : sb.getValue();
}
+ /**
+ * Laysouts a vertical scroll bar.
+ * @param sb the scroll bar
+ */
protected void layoutVScrollbar(JScrollBar sb)
{
Dimension sbSize = sb.getSize();
@@ -742,7 +850,10 @@
}
}
-
+ /**
+ * Laysouts a vertical scroll bar.
+ * @param sb the scroll bar
+ */
protected void layoutHScrollbar(JScrollBar sb)
{
Dimension sbSize = sb.getSize();
@@ -966,6 +1077,10 @@
scrollbar.setValue(newValue);
}
+ /**
+ * Scrolls by block.
+ * @param direction the direction to scroll
+ */
protected void scrollByBlock(int direction)
{
scrollByBlock(scrollbar, direction);
@@ -1033,6 +1148,10 @@
}
}
+ /**
+ * Scrolls by unit.
+ * @param direction the direction to scroll
+ */
protected void scrollByUnit(int direction) {
scrollByUnits(scrollbar, direction, 1, false);
}
@@ -1050,7 +1169,6 @@
/**
* A listener to listen for model changes.
- *
*/
protected class ModelListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
@@ -1069,10 +1187,15 @@
protected class TrackListener
extends MouseAdapter implements MouseMotionListener
{
+ /** The offset */
protected transient int offset;
- protected transient int currentMouseX, currentMouseY;
+ /** Current mouse x position */
+ protected transient int currentMouseX;
+ /** Current mouse y position */
+ protected transient int currentMouseY;
private transient int direction = +1;
+ /** {@inheritDoc} */
public void mouseReleased(MouseEvent e)
{
if (isDragging) {
@@ -1339,6 +1462,7 @@
}
}
+ /** {@inheritDoc} */
public void mouseMoved(MouseEvent e) {
if (!isDragging) {
updateThumbState(e.getX(), e.getY());
@@ -1406,19 +1530,34 @@
int direction = +1;
boolean useBlockIncrement;
+ /** Constructs a {@code ScrollListener}. */
public ScrollListener() {
direction = +1;
useBlockIncrement = false;
}
+ /**
+ * Constructs a {@code ScrollListener}.
+ * @param dir direction
+ * @param block use block increment
+ */
public ScrollListener(int dir, boolean block) {
direction = dir;
useBlockIncrement = block;
}
+ /**
+ * Sets the direction.
+ * @param direction the new direction
+ */
public void setDirection(int direction) { this.direction = direction; }
+ /**
+ * Sets the scrolling by block
+ * @param block whether or not to scroll by block
+ */
public void setScrollByBlock(boolean block) { this.useBlockIncrement = block; }
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
if(useBlockIncrement) {
scrollByBlock(direction);
@@ -1497,13 +1636,14 @@
}
}
+ /** Property change handler */
public class PropertyChangeHandler implements PropertyChangeListener
{
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
-
+ /** {@inheritDoc} */
public void propertyChange(PropertyChangeEvent e) {
getHandler().propertyChange(e);
}
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicScrollPaneUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -746,6 +746,9 @@
}
}
+ /**
+ * Property change handler.
+ */
public class PropertyChangeHandler implements PropertyChangeListener
{
@@ -754,6 +757,9 @@
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /**
+ * {@inheritDoc}
+ */
public void propertyChange(PropertyChangeEvent e)
{
getHandler().propertyChange(e);
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicSliderUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -47,33 +47,55 @@
// Old actions forward to an instance of this.
private static final Actions SHARED_ACTION = new Actions();
+ /** Positive scroll */
public static final int POSITIVE_SCROLL = +1;
+ /** Negative scroll */
public static final int NEGATIVE_SCROLL = -1;
+ /** Minimum scroll */
public static final int MIN_SCROLL = -2;
+ /** Maximum scroll */
public static final int MAX_SCROLL = +2;
+ /** Scroll timer */
protected Timer scrollTimer;
+ /** Slider */
protected JSlider slider;
+ /** Focus insets */
protected Insets focusInsets = null;
+ /** Inset cache */
protected Insets insetCache = null;
+ /** Left-to-right cache */
protected boolean leftToRightCache = true;
+ /** Focus rectangle */
protected Rectangle focusRect = null;
+ /** Content rectangle */
protected Rectangle contentRect = null;
+ /** Label rectangle */
protected Rectangle labelRect = null;
+ /** Tick rectangle */
protected Rectangle tickRect = null;
+ /** Track rectangle */
protected Rectangle trackRect = null;
+ /** Thumb rectangle */
protected Rectangle thumbRect = null;
- protected int trackBuffer = 0; // The distance that the track is from the side of the control
+ /** The distance that the track is from the side of the control */
+ protected int trackBuffer = 0;
private transient boolean isDragging;
+ /** Track listener */
protected TrackListener trackListener;
+ /** Change listener */
protected ChangeListener changeListener;
+ /** Component listener */
protected ComponentListener componentListener;
+ /** Focus listener */
protected FocusListener focusListener;
+ /** Scroll listener */
protected ScrollListener scrollListener;
+ /** Property chane listener */
protected PropertyChangeListener propertyChangeListener;
private Handler handler;
private int lastValue;
@@ -93,15 +115,26 @@
*/
private boolean sameLabelBaselines;
-
+ /**
+ * Returns the shadow color.
+ * @return the shadow color
+ */
protected Color getShadowColor() {
return shadowColor;
}
+ /**
+ * Returns the highlight color.
+ * @return the highlight color
+ */
protected Color getHighlightColor() {
return highlightColor;
}
+ /**
+ * Returns the focus color.
+ * @return the focus color
+ */
protected Color getFocusColor() {
return focusColor;
}
@@ -119,13 +152,26 @@
/////////////////////////////////////////////////////////////////////////////
// ComponentUI Interface Implementation methods
/////////////////////////////////////////////////////////////////////////////
+ /**
+ * Creates a UI.
+ * @param b a component
+ * @return a UI
+ */
public static ComponentUI createUI(JComponent b) {
return new BasicSliderUI((JSlider)b);
}
+ /**
+ * Constructs a {@code BasicSliderUI}.
+ * @param b a slider
+ */
public BasicSliderUI(JSlider b) {
}
+ /**
+ * Installs a UI.
+ * @param c a component
+ */
public void installUI(JComponent c) {
slider = (JSlider) c;
@@ -162,6 +208,10 @@
calculateGeometry(); // This figures out where the labels, ticks, track, and thumb are.
}
+ /**
+ * Uninstalls a UI.
+ * @param c a component
+ */
public void uninstallUI(JComponent c) {
if ( c != slider )
throw new IllegalComponentStateException(
@@ -193,6 +243,10 @@
slider = null;
}
+ /**
+ * Installs the defaults.
+ * @param slider a slider
+ */
protected void installDefaults( JSlider slider ) {
LookAndFeel.installBorder(slider, "Slider.border");
LookAndFeel.installColorsAndFont(slider, "Slider.background",
@@ -208,32 +262,66 @@
if (focusInsets == null) focusInsets = new InsetsUIResource(2,2,2,2);
}
+ /**
+ * Uninstalls the defaults.
+ * @param slider a slider
+ */
protected void uninstallDefaults(JSlider slider) {
LookAndFeel.uninstallBorder(slider);
focusInsets = null;
}
+ /**
+ * Creates a track listener.
+ * @return a track listener
+ * @param slider a slider
+ */
protected TrackListener createTrackListener(JSlider slider) {
return new TrackListener();
}
+ /**
+ * Creates a change listener.
+ * @return a change listener
+ * @param slider a slider
+ */
protected ChangeListener createChangeListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a composite listener.
+ * @return a composite listener
+ * @param slider a slider
+ */
protected ComponentListener createComponentListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a focus listener.
+ * @return a focus listener
+ * @param slider a slider
+ */
protected FocusListener createFocusListener(JSlider slider) {
return getHandler();
}
+ /**
+ * Creates a scroll listener.
+ * @return a scroll listener
+ * @param slider a slider
+ */
protected ScrollListener createScrollListener( JSlider slider ) {
return new ScrollListener();
}
+ /**
+ * Creates a property change listener.
+ * @return a property change listener
+ * @param slider a slider
+ */
protected PropertyChangeListener createPropertyChangeListener(
JSlider slider) {
return getHandler();
@@ -246,6 +334,10 @@
return handler;
}
+ /**
+ * Installs listeners.
+ * @param slider a slider
+ */
protected void installListeners( JSlider slider ) {
slider.addMouseListener(trackListener);
slider.addMouseMotionListener(trackListener);
@@ -255,6 +347,10 @@
slider.getModel().addChangeListener(changeListener);
}
+ /**
+ * Uninstalls listeners.
+ * @param slider a slider
+ */
protected void uninstallListeners( JSlider slider ) {
slider.removeMouseListener(trackListener);
slider.removeMouseMotionListener(trackListener);
@@ -265,6 +361,10 @@
handler = null;
}
+ /**
+ * Installs keyboard actions.
+ * @param slider a slider
+ */
protected void installKeyboardActions( JSlider slider ) {
InputMap km = getInputMap(JComponent.WHEN_FOCUSED, slider);
SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED, km);
@@ -302,6 +402,10 @@
map.put(new Actions(Actions.MAX_SCROLL_INCREMENT));
}
+ /**
+ * Uninstalls keyboard actions.
+ * @param slider a slider
+ */
protected void uninstallKeyboardActions( JSlider slider ) {
SwingUtilities.replaceUIActionMap(slider, null);
SwingUtilities.replaceUIInputMap(slider, JComponent.WHEN_FOCUSED,
@@ -430,6 +534,10 @@
return sameLabelBaselines;
}
+ /**
+ * Returns the preferred horizontal size.
+ * @return the preferred horizontal size
+ */
public Dimension getPreferredHorizontalSize() {
Dimension horizDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.horizontalSize");
@@ -439,6 +547,10 @@
return horizDim;
}
+ /**
+ * Returns the preferred vertical size.
+ * @return the preferred vertical size
+ */
public Dimension getPreferredVerticalSize() {
Dimension vertDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.verticalSize");
@@ -448,6 +560,10 @@
return vertDim;
}
+ /**
+ * Returns the minimum horizontal size.
+ * @return the minimum horizontal size
+ */
public Dimension getMinimumHorizontalSize() {
Dimension minHorizDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.minimumHorizontalSize");
@@ -457,6 +573,10 @@
return minHorizDim;
}
+ /**
+ * Returns the minimum vertical size.
+ * @return the minimum vertical size
+ */
public Dimension getMinimumVerticalSize() {
Dimension minVertDim = (Dimension)DefaultLookup.get(slider,
this, "Slider.minimumVerticalSize");
@@ -466,6 +586,11 @@
return minVertDim;
}
+ /**
+ * Returns the preferred size.
+ * @param c a component
+ * @return the preferred size
+ */
public Dimension getPreferredSize(JComponent c) {
recalculateIfInsetsChanged();
Dimension d;
@@ -485,6 +610,11 @@
return d;
}
+ /**
+ * Returns the minimum size.
+ * @param c a component
+ * @return the minimum size
+ */
public Dimension getMinimumSize(JComponent c) {
recalculateIfInsetsChanged();
Dimension d;
@@ -505,6 +635,11 @@
return d;
}
+ /**
+ * Returns the maximum size.
+ * @param c a component
+ * @return the maximum size
+ */
public Dimension getMaximumSize(JComponent c) {
Dimension d = getPreferredSize(c);
if ( slider.getOrientation() == JSlider.VERTICAL ) {
@@ -517,6 +652,9 @@
return d;
}
+ /**
+ * Calculates the geometry.
+ */
protected void calculateGeometry() {
calculateFocusRect();
calculateContentRect();
@@ -528,6 +666,9 @@
calculateThumbLocation();
}
+ /**
+ * Calculates the focus rectangle.
+ */
protected void calculateFocusRect() {
focusRect.x = insetCache.left;
focusRect.y = insetCache.top;
@@ -535,11 +676,17 @@
focusRect.height = slider.getHeight() - (insetCache.top + insetCache.bottom);
}
+ /**
+ * Calculates the thumb size rectangle.
+ */
protected void calculateThumbSize() {
Dimension size = getThumbSize();
thumbRect.setSize( size.width, size.height );
}
+ /**
+ * Calculates the content rectangle.
+ */
protected void calculateContentRect() {
contentRect.x = focusRect.x + focusInsets.left;
contentRect.y = focusRect.y + focusInsets.top;
@@ -564,6 +711,9 @@
return result;
}
+ /**
+ * Calculates the thumb location.
+ */
protected void calculateThumbLocation() {
if ( slider.getSnapToTicks() ) {
int sliderValue = slider.getValue();
@@ -603,6 +753,9 @@
}
}
+ /**
+ * Calculates the track buffer.
+ */
protected void calculateTrackBuffer() {
if ( slider.getPaintLabels() && slider.getLabelTable() != null ) {
Component highLabel = getHighestValueLabel();
@@ -627,7 +780,9 @@
}
}
-
+ /**
+ * Calculates the track rectangle.
+ */
protected void calculateTrackRect() {
int centerSpacing; // used to center sliders added using BorderLayout.CENTER (bug 4275631)
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
@@ -671,6 +826,9 @@
return 8;
}
+ /**
+ * Calculates the tick rectangle.
+ */
protected void calculateTickRect() {
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
tickRect.x = trackRect.x;
@@ -691,6 +849,9 @@
}
}
+ /**
+ * Calculates the label rectangle.
+ */
protected void calculateLabelRect() {
if ( slider.getPaintLabels() ) {
if ( slider.getOrientation() == JSlider.HORIZONTAL ) {
@@ -733,6 +894,10 @@
}
}
+ /**
+ * Returns the thumb size.
+ * @return the thumb size
+ */
protected Dimension getThumbSize() {
Dimension size = new Dimension();
@@ -748,16 +913,24 @@
return size;
}
+ /**
+ * A property change handler.
+ */
public class PropertyChangeHandler implements PropertyChangeListener {
// NOTE: This class exists only for backward compatibility. All
// its functionality has been moved into Handler. If you need to add
// new functionality add it to the Handler, but make sure this
// class calls into the Handler.
+ /** {@inheritDoc} */
public void propertyChange( PropertyChangeEvent e ) {
getHandler().propertyChange(e);
}
}
+ /**
+ * Returns the width of the widest label.
+ * @return the width of the widest label
+ */
protected int getWidthOfWidestLabel() {
@SuppressWarnings("rawtypes")
Dictionary dictionary = slider.getLabelTable();
@@ -772,6 +945,10 @@
return widest;
}
+ /**
+ * Returns the height of the tallest label.
+ * @return the height of the tallest label
+ */
protected int getHeightOfTallestLabel() {
@SuppressWarnings("rawtypes")
Dictionary dictionary = slider.getLabelTable();
@@ -786,6 +963,10 @@
return tallest;
}
+ /**
+ * Returns the width of the highest value label.
+ * @return the width of the highest value label
+ */
protected int getWidthOfHighValueLabel() {
Component label = getHighestValueLabel();
int width = 0;
@@ -797,6 +978,10 @@
return width;
}
+ /**
+ * Returns the width of the lowest value label.
+ * @return the width of the lowest value label
+ */
protected int getWidthOfLowValueLabel() {
Component label = getLowestValueLabel();
int width = 0;
@@ -808,6 +993,10 @@
return width;
}
+ /**
+ * Returns the height of the highest value label.
+ * @return the height of the highest value label
+ */
protected int getHeightOfHighValueLabel() {
Component label = getHighestValueLabel();
int height = 0;
@@ -819,6 +1008,10 @@
return height;
}
+ /**
+ * Returns the height of the lowest value label.
+ * @return the height of the lowest value label
+ */
protected int getHeightOfLowValueLabel() {
Component label = getLowestValueLabel();
int height = 0;
@@ -830,6 +1023,10 @@
return height;
}
+ /**
+ * Draws inverted.
+ * @return the inverted-ness
+ */
protected boolean drawInverted() {
if (slider.getOrientation()==JSlider.HORIZONTAL) {
if(BasicGraphicsUtils.isLeftToRight(slider)) {
@@ -960,6 +1157,9 @@
}
}
+ /**
+ * Recalculates if the insets have changed.
+ */
protected void recalculateIfInsetsChanged() {
Insets newInsets = slider.getInsets();
if ( !newInsets.equals( insetCache ) ) {
@@ -968,6 +1168,9 @@
}
}
+ /**
+ * Recalculates if the orientation has changed.
+ */
protected void recalculateIfOrientationChanged() {
boolean ltr = BasicGraphicsUtils.isLeftToRight(slider);
if ( ltr!=leftToRightCache ) {
@@ -976,6 +1179,10 @@
}
}
+ /**
+ * Paints focus.
+ * @param g the graphics
+ */
public void paintFocus(Graphics g) {
g.setColor( getFocusColor() );
@@ -983,6 +1190,10 @@
focusRect.width, focusRect.height );
}
+ /**
+ * Paints track.
+ * @param g the graphics
+ */
public void paintTrack(Graphics g) {
Rectangle trackBounds = trackRect;
@@ -1023,6 +1234,10 @@
}
}
+ /**
+ * Paints ticks.
+ * @param g the graphics
+ */
public void paintTicks(Graphics g) {
Rectangle tickBounds = tickRect;
@@ -1120,22 +1335,50 @@
}
}
+ /**
+ * Paints minor tick for horizontal slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param x the x coordinate
+ */
protected void paintMinorTickForHorizSlider( Graphics g, Rectangle tickBounds, int x ) {
g.drawLine( x, 0, x, tickBounds.height / 2 - 1 );
}
+ /**
+ * Paints major tick for horizontal slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param x the x coordinate
+ */
protected void paintMajorTickForHorizSlider( Graphics g, Rectangle tickBounds, int x ) {
g.drawLine( x, 0, x, tickBounds.height - 2 );
}
+ /**
+ * Paints minor tick for vertical slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param y the y coordinate
+ */
protected void paintMinorTickForVertSlider( Graphics g, Rectangle tickBounds, int y ) {
g.drawLine( 0, y, tickBounds.width / 2 - 1, y );
}
+ /**
+ * Paints major tick for vertical slider.
+ * @param g the graphics
+ * @param tickBounds the tick bounds
+ * @param y the y coordinate
+ */
protected void paintMajorTickForVertSlider( Graphics g, Rectangle tickBounds, int y ) {
g.drawLine( 0, y, tickBounds.width - 2, y );
}
+ /**
+ * Paints the labels.
+ * @param g the graphics
+ */
public void paintLabels( Graphics g ) {
Rectangle labelBounds = labelRect;
@@ -1222,6 +1465,10 @@
g.translate( 0, -labelTop );
}
+ /**
+ * Paints the thumb.
+ * @param g the graphics
+ */
public void paintThumb(Graphics g) {
Rectangle knobBounds = thumbRect;
int w = knobBounds.width;
@@ -1330,6 +1577,11 @@
// Used exclusively by setThumbLocation()
private static Rectangle unionRect = new Rectangle();
+ /**
+ * Sets the thumb location.
+ * @param x the x coordinate
+ * @param y the y coordinate
+ */
public void setThumbLocation(int x, int y) {
unionRect.setBounds( thumbRect );
@@ -1339,6 +1591,10 @@
slider.repaint( unionRect.x, unionRect.y, unionRect.width, unionRect.height );
}
+ /**
+ * Scrolls by block.
+ * @param direction the direction
+ */
public void scrollByBlock(int direction) {
synchronized(slider) {
int blockIncrement =
@@ -1360,6 +1616,10 @@
}
}
+ /**
+ * Scrolls by unit.
+ * @param direction the direction
+ */
public void scrollByUnit(int direction) {
synchronized(slider) {
int delta = ((direction > 0) ? POSITIVE_SCROLL : NEGATIVE_SCROLL);
@@ -1384,6 +1644,11 @@
scrollByBlock( dir );
}
+ /**
+ * Returns the x position for a value.
+ * @param value the value
+ * @return the x position for a value
+ */
protected int xPositionForValue( int value ) {
int min = slider.getMinimum();
int max = slider.getMaximum();
@@ -1409,6 +1674,11 @@
return xPosition;
}
+ /**
+ * Returns the y position for a value.
+ * @param value the value
+ * @return the y position for a value
+ */
protected int yPositionForValue( int value ) {
return yPositionForValue(value, trackRect.y, trackRect.height);
}
@@ -1605,9 +1875,16 @@
* Instantiate it only within subclasses of <code>Foo</code>.
*/
public class TrackListener extends MouseInputAdapter {
+ /** The offset */
protected transient int offset;
- protected transient int currentMouseX, currentMouseY;
+ /** Current mouse x. */
+ protected transient int currentMouseX;
+ /** Current mouse y. */
+ protected transient int currentMouseY;
+ /**
+ * {@inheritDoc}
+ */
public void mouseReleased(MouseEvent e) {
if (!slider.isEnabled()) {
return;
@@ -1736,6 +2013,11 @@
}
}
+ /**
+ * Returns if scrolling should occur
+ * @param direction the direction.
+ * @return if scrolling should occur
+ */
public boolean shouldScroll(int direction) {
Rectangle r = thumbRect;
if (slider.getOrientation() == JSlider.VERTICAL) {
@@ -1772,9 +2054,9 @@
}
/**
- * Set the models value to the position of the top/left
- * of the thumb relative to the origin of the track.
- */
+ * Set the models value to the position of the top/left
+ * of the thumb relative to the origin of the track.
+ */
public void mouseDragged(MouseEvent e) {
int thumbMiddle;
@@ -1839,6 +2121,7 @@
}
}
+ /** {@inheritDoc} */
public void mouseMoved(MouseEvent e) { }
}
@@ -1855,24 +2138,41 @@
int direction = POSITIVE_SCROLL;
boolean useBlockIncrement;
+ /**
+ * Constructs a {@code ScrollListener}
+ */
public ScrollListener() {
direction = POSITIVE_SCROLL;
useBlockIncrement = true;
}
+ /**
+ * Constructs a {@code ScrollListener}
+ * @param dir the direction
+ * @param block whether or not to scroll by block
+ */
public ScrollListener(int dir, boolean block) {
direction = dir;
useBlockIncrement = block;
}
+ /**
+ * Sets the direction.
+ * @param direction the new direction
+ */
public void setDirection(int direction) {
this.direction = direction;
}
+ /**
+ * Sets scrolling by block
+ * @param block the new scroll by block value
+ */
public void setScrollByBlock(boolean block) {
this.useBlockIncrement = block;
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
if (useBlockIncrement) {
scrollByBlock(direction);
@@ -1945,16 +2245,24 @@
boolean block;
JSlider slider;
+ /**
+ * Constructs an {@code ActionScroller}.
+ * @param slider a slider
+ * @param dir the direction
+ * @param block block scrolling or not
+ */
public ActionScroller( JSlider slider, int dir, boolean block) {
this.dir = dir;
this.block = block;
this.slider = slider;
}
+ /** {@inheritDoc} */
public void actionPerformed(ActionEvent e) {
SHARED_ACTION.scroll(slider, BasicSliderUI.this, dir, block);
}
+ /** {@inheritDoc} */
public boolean isEnabled() {
boolean b = true;
if (slider != null) {
--- a/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Tue Apr 14 12:10:01 2015 -0700
+++ b/jdk/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java Tue Apr 14 14:47:12 2015 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -56,22 +56,33 @@
// Instance variables initialized at installation
+ /** The tab pane */
protected JTabbedPane tabPane;
+ /** Highlight color */
protected Color highlight;
+ /** Light highlight color */
protected Color lightHighlight;
+ /** Shadow color */
protected Color shadow;
+ /** Dark shadow color */
protected Color darkShadow;
+ /** Focus color */
protected Color focus;
private Color selectedColor;
+ /** Text icon gap */
protected int textIconGap;
-
+ /** Tab run overlay */
protected int tabRunOverlay;
+ /** Tab insets */
protected Insets tabInsets;
+ /** Selected tab insets */
protected Insets selectedTabPadInsets;
+ /** Tab area insets */
protected Insets tabAreaInsets;
+ /** Content border insets */
protected Insets contentBorderInsets;
private boolean tabsOverlapBorder;
private boolean tabsOpaque = true;
@@ -120,19 +131,28 @@
// Transient variables (recalculated each time TabbedPane is layed out)
-
+ /** Tab runs */
protected int tabRuns[] = new int[10];
+ /** Run count */
protected int runCount = 0;
+ /** Selected run */
protected int selectedRun = -1;
+ /** Tab rects */
protected Rectangle rects[] = new Rectangle[0];
+ /** Maximum tab height */
protected int maxTabHeight;
+ /** Maximum tab width */
protected int maxTabWidth;
// Listeners
+ /** Tab change listener */
protected ChangeListener tabChangeListener;
+ /** Property change listener */
protected PropertyChangeListener propertyChangeListener;
+ /** Mouse change listener */
protected MouseListener mouseListener;
+ /** Focus change listener */
protected FocusListener focusListener;
// Private instance data
@@ -190,6 +210,11 @@
// UI creation
+ /**
+ * Create a UI.
+ * @param c a component
+ * @return a UI
+ */
public static ComponentUI createUI(JComponent c) {
return new BasicTabbedPaneUI();
}
@@ -355,6 +380,9 @@
tabContainer = null;
}
+ /**
+ * Install the defaults.
+ */
protected void installDefaults() {
LookAndFeel.installColorsAndFont(tabPane, "TabbedPane.background",
"TabbedPane.foreground", "TabbedPane.font");
@@ -389,6 +417,9 @@
if (contentBorderInsets == null) contentBorderInsets = new Insets(2,2,3,3);
}
+ /**
+ * Uninstall the defaults.
+ */
protected void uninstallDefaults() {
highlight = null;
lightHighlight = null;
@@ -401,6 +432,9 @@
contentBorderInsets = null;
}
+ /**
+ * Install the listeners.
+ */
protected void installListeners() {
if ((propertyChangeListener = createPropertyChangeListener()) != null) {
tabPane.addPropertyChangeListener(propertyChangeListener);
@@ -421,6 +455,9 @@
}
}
+ /**
+ * Uninstall the listeners.
+ */
protected void uninstallListeners() {
if (mouseListener != null) {
tabPane.removeMouseListener(mouseListener);
@@ -448,18 +485,34 @@
handler = null;
}
+ /**
+ * Creates a mouse listener.
+ * @return a mouse listener
+ */
protected MouseListener createMouseListener() {
return getHandler();
}
+ /**
+ * Creates a focus listener.
+ * @return a focus listener
+ */
protected FocusListener createFocusListener() {
return getHandler();
}
+ /**
+ * Creates a change listener.
+ * @return a change listener
+ */
protected ChangeListener createChangeListener() {
return getHandler();
}
+ /**
+ * Creates a property change listener.
+ * @return a property change listener
+ */
protected PropertyChangeListener createPropertyChangeListener() {
return getHandler();
}
@@ -471,6 +524,9 @@
return handler;
}
+ /**
+ * Installs the keyboard actions.
+ */
protected void installKeyboardActions() {
InputMap km = getInputMap(JComponent.
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
@@ -498,6 +554,9 @@
return null;
}
+ /**
+ * Uninstalls the keyboard actions.
+ */
protected void uninstallKeyboardActions() {
SwingUtilities.replaceUIActionMap(tabPane, null);
SwingUtilities.replaceUIInputMap(tabPane, JComponent.
@@ -844,6 +903,15 @@
}
}
+ /**
+ * Paints a tab.
+ * @param g the graphics
+ * @param tabPlacement the tab placement
+ * @param rects rectangles
+ * @param tabIndex the tab index
+ * @param iconRect the icon rectangle
+ * @param textRect the text rectangle
+ */
protected void paintTab(Graphics g, int tabPlacement,
Rectangle[] rects, int tabIndex,
Rectangle iconRect, Rectangle textRect) {
@@ -1012,6 +1080,18 @@
}
}
+ /**
+ * Laysout a label.
+ * @param tabPlacement the tab placement
+ * @param metrics the font metric
+ * @param tabIndex the tab index
+ * @param title the title
+ * @param icon the icon
+ * @param tabRect the tab rectangle
+ * @param iconRect the icon rectangle
+ * @param textRect the text rectangle
+ * @param isSelected selection status
+ */
protected void layoutLabel(int tabPlacement,
FontMetrics metrics, int tabIndex,
String title, Icon icon,
@@ -1045,6 +1125,15 @@
textRect.y += yNudge;
}
+ /**
+ * Paints an icon.
+ * @param g the graphics
+ * @param tabPlacement the tab placement
+ * @param tabIndex the tab index
+ * @param icon the icon
+ * @param iconRect the icon rectangle
+ * @param isSelected selection status
+ */
protected void paintIcon(Graphics g, int tabPlacement,
int tabIndex, Icon icon, Rectangle iconRect,
boolean isSelected ) {
@@ -1053,6 +1142,17 @@
}
}
+ /**
+ * Paints text.
+ * @param g the graphics
+ * @param tabPlacement the tab placement
+ * @param font the font
+ * @param metrics the font metrics
+ * @param tabIndex the tab index
+ * @param title the title
+ * @param textRect the text rectangle
+ * @param isSelected selection status
+ */
protected void paintText(Graphics g, int tabPlacement,
Font font, FontMetrics metrics, int tabIndex,
String title, Rectangle textRect,
@@ -1096,7 +1196,13 @@
}
}
-
+ /**
+ * Returns the tab label shift x.
+ * @param tabPlacement the tab placement
+ * @param tabIndex the tab index
+ * @param isSelected selection status
+ * @return the tab label shift x
+ */
protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected) {
Rectangle tabRect = rects[tabIndex];
String propKey = (isSelected ? "selectedLabelShift" : "labelShift");
@@ -1115,6 +1221,13 @@
}
}
+ /**
+ * Returns the tab label shift y.
+ * @param tabPlacement the tab placement
+ * @param tabIndex the tab index
+ * @param isSelected selection status
+ * @return the tab label shift y
+ */
protected int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected) {
Rectangle tabRect = rects[tabIndex];
int nudge = (isSelected ? DefaultLookup.getInt(tabPane, this, "TabbedPane.selectedLabelShift", -1) :
@@ -1132,6 +1245,16 @@
}
}
+ /**
+ * Paints the focus indicator.
+ * @param g the graphics
+ * @param tabPlacement the tab placement
+ * @param rects rectangles
+ * @param tabIndex the tab index
+ * @param iconRect the icon rectangle
+ * @param textRect the text rectangle
+ * @param isSelected selection status
+ */
protected void paintFocusIndicator(Graphics g, int tabPlacement,
Rectangle[] rects, int tabIndex,
Rectangle iconRect, Rectangle textRect,
@@ -1245,6 +1368,18 @@
}
}
+ /**
+ * Paints the tab background.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabIndex the index of the tab with respect to other tabs
+ * @param x the x coordinate of tab
+ * @param y the y coordinate of tab
+ * @param w the width of the tab
+ * @param h the height of the tab
+ * @param isSelected a {@code boolean} which determines whether or not
+ * the tab is selected
+ */
protected void paintTabBackground(Graphics g, int tabPlacement,
int tabIndex,
int x, int y, int w, int h,
@@ -1267,6 +1402,12 @@
}
}
+ /**
+ * Paints the content border.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param selectedIndex the tab index of the selected component
+ */
protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex) {
int width = tabPane.getWidth();
int height = tabPane.getHeight();
@@ -1329,6 +1470,16 @@
}
+ /**
+ * Paints the content border top edge.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param selectedIndex the tab index of the selected component
+ * @param x the x coordinate of tab
+ * @param y the y coordinate of tab
+ * @param w the width of the tab
+ * @param h the height of the tab
+ */
protected void paintContentBorderTopEdge(Graphics g, int tabPlacement,
int selectedIndex,
int x, int y, int w, int h) {
@@ -1358,6 +1509,16 @@
}
}
+ /**
+ * Paints the content border left edge.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param selectedIndex the tab index of the selected component
+ * @param x the x coordinate of tab
+ * @param y the y coordinate of tab
+ * @param w the width of the tab
+ * @param h the height of the tab
+ */
protected void paintContentBorderLeftEdge(Graphics g, int tabPlacement,
int selectedIndex,
int x, int y, int w, int h) {
@@ -1384,6 +1545,16 @@
}
}
+ /**
+ * Paints the content border bottom edge.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param selectedIndex the tab index of the selected component
+ * @param x the x coordinate of tab
+ * @param y the y coordinate of tab
+ * @param w the width of the tab
+ * @param h the height of the tab
+ */
protected void paintContentBorderBottomEdge(Graphics g, int tabPlacement,
int selectedIndex,
int x, int y, int w, int h) {
@@ -1417,6 +1588,16 @@
}
+ /**
+ * Paints the content border right edge.
+ * @param g the graphics context in which to paint
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param selectedIndex the tab index of the selected component
+ * @param x the x coordinate of tab
+ * @param y the y coordinate of tab
+ * @param w the width of the tab
+ * @param h the height of the tab
+ */
protected void paintContentBorderRightEdge(Graphics g, int tabPlacement,
int selectedIndex,
int x, int y, int w, int h) {
@@ -1618,10 +1799,18 @@
// BasicTabbedPaneUI methods
+ /**
+ * Returns the visible component.
+ * @return the visible component
+ */
protected Component getVisibleComponent() {
return visibleComponent;
}
+ /**
+ * Sets the visible component.
+ * @param component the component
+ */
protected void setVisibleComponent(Component component) {
if (visibleComponent != null
&& visibleComponent != component
@@ -1636,6 +1825,10 @@
visibleComponent = component;
}
+ /**
+ * Assure the rectangles are created.
+ * @param tabCount the tab count
+ */
protected void assureRectsCreated(int tabCount) {
int rectArrayLen = rects.length;
if (tabCount != rectArrayLen ) {
@@ -1650,6 +1843,9 @@
}
+ /**
+ * Expands the tab runs array.
+ */
protected void expandTabRunsArray() {
int rectLen = tabRuns.length;
int[] newArray = new int[rectLen+10];
@@ -1657,6 +1853,12 @@
tabRuns = newArray;
}
+ /**
+ * Returns the run for a tab.
+ * @param tabCount the tab count
+ * @param tabIndex the tab index.
+ * @return the run for a tab
+ */
protected int getRunForTab(int tabCount, int tabIndex) {
for (int i = 0; i < runCount; i++) {
int first = tabRuns[i];
@@ -1668,6 +1870,12 @@
return 0;
}
+ /**
+ * Returns the last tab in a run.
+ * @param tabCount the tab count
+ * @param run the run
+ * @return the last tab in a run
+ */
protected int lastTabInRun(int tabCount, int run) {
if (runCount == 1) {
return tabCount - 1;
@@ -1679,22 +1887,49 @@
return tabRuns[nextRun]-1;
}
+ /**
+ * Returns the tab run overlay.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the tab run overlay
+ */
protected int getTabRunOverlay(int tabPlacement) {
return tabRunOverlay;
}
+ /**
+ * Returns the tab run indent.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param run the tab run
+ * @return the tab run indent
+ */
protected int getTabRunIndent(int tabPlacement, int run) {
return 0;
}
+ /**
+ * Returns whether or not the tab run should be padded.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param run the tab run
+ * @return whether or not the tab run should be padded
+ */
protected boolean shouldPadTabRun(int tabPlacement, int run) {
return runCount > 1;
}
+ /**
+ * Returns whether or not the tab run should be rotated.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return whether or not the tab run should be rotated
+ */
protected boolean shouldRotateTabRuns(int tabPlacement) {
return true;
}
+ /**
+ * Returns the icon for a tab.
+ * @param tabIndex the index of the tab
+ * @return the icon for a tab
+ */
protected Icon getIconForTab(int tabIndex) {
return (!tabPane.isEnabled() || !tabPane.isEnabledAt(tabIndex))?
tabPane.getDisabledIconAt(tabIndex) : tabPane.getIconAt(tabIndex);
@@ -1718,6 +1953,13 @@
return null;
}
+ /**
+ * Calculates the tab height.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabIndex the index of the tab with respect to other tabs
+ * @param fontHeight the font height
+ * @return the tab height
+ */
protected int calculateTabHeight(int tabPlacement, int tabIndex, int fontHeight) {
int height = 0;
Component c = tabPane.getTabComponentAt(tabIndex);
@@ -1743,6 +1985,11 @@
return height;
}
+ /**
+ * Calculates the maximum tab height.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the maximum tab height
+ */
protected int calculateMaxTabHeight(int tabPlacement) {
FontMetrics metrics = getFontMetrics();
int tabCount = tabPane.getTabCount();
@@ -1754,6 +2001,13 @@
return result;
}
+ /**
+ * Calculates the tab width.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabIndex the index of the tab with respect to other tabs
+ * @param metrics the font metrics
+ * @return the tab width
+ */
protected int calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics) {
Insets tabInsets = getTabInsets(tabPlacement, tabIndex);
int width = tabInsets.left + tabInsets.right + 3;
@@ -1778,6 +2032,11 @@
return width;
}
+ /**
+ * Calculates the maximum tab width.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the maximum tab width
+ */
protected int calculateMaxTabWidth(int tabPlacement) {
FontMetrics metrics = getFontMetrics();
int tabCount = tabPane.getTabCount();
@@ -1788,6 +2047,13 @@
return result;
}
+ /**
+ * Calculates the tab area height.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param horizRunCount horizontal run count
+ * @param maxTabHeight maximum tab height
+ * @return the tab area height
+ */
protected int calculateTabAreaHeight(int tabPlacement, int horizRunCount, int maxTabHeight) {
Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
int tabRunOverlay = getTabRunOverlay(tabPlacement);
@@ -1797,6 +2063,13 @@
0);
}
+ /**
+ * Calculates the tab area width.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param vertRunCount vertical run count
+ * @param maxTabWidth maximum tab width
+ * @return the tab area width
+ */
protected int calculateTabAreaWidth(int tabPlacement, int vertRunCount, int maxTabWidth) {
Insets tabAreaInsets = getTabAreaInsets(tabPlacement);
int tabRunOverlay = getTabRunOverlay(tabPlacement);
@@ -1806,24 +2079,49 @@
0);
}
+ /**
+ * Returns the tab insets.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabIndex the tab index
+ * @return the tab insets
+ */
protected Insets getTabInsets(int tabPlacement, int tabIndex) {
return tabInsets;
}
+ /**
+ * Returns the selected tab pad insets.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the selected tab pad insets
+ */
protected Insets getSelectedTabPadInsets(int tabPlacement) {
rotateInsets(selectedTabPadInsets, currentPadInsets, tabPlacement);
return currentPadInsets;
}
+ /**
+ * Returns the tab area insets.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the pad area insets
+ */
protected Insets getTabAreaInsets(int tabPlacement) {
rotateInsets(tabAreaInsets, currentTabAreaInsets, tabPlacement);
return currentTabAreaInsets;
}
+ /**
+ * Returns the content border insets.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @return the content border insets
+ */
protected Insets getContentBorderInsets(int tabPlacement) {
return contentBorderInsets;
}
+ /**
+ * Returns the font metrics.
+ * @return the font metrics
+ */
protected FontMetrics getFontMetrics() {
Font font = tabPane.getFont();
return tabPane.getFontMetrics(font);
@@ -1832,6 +2130,10 @@
// Tab Navigation methods
+ /**
+ * Navigate the selected tab.
+ * @param direction the direction
+ */
protected void navigateSelectedTab(int direction) {
int tabPlacement = tabPane.getTabPlacement();
int current = DefaultLookup.getBoolean(tabPane, this,
@@ -1910,6 +2212,10 @@
}
}
+ /**
+ * Select the next tab in the run.
+ * @param current the current tab
+ */
protected void selectNextTabInRun(int current) {
int tabCount = tabPane.getTabCount();
int tabIndex = getNextTabIndexInRun(tabCount, current);
@@ -1920,6 +2226,10 @@
navigateTo(tabIndex);
}
+ /**
+ * Select the previous tab in the run.
+ * @param current the current tab
+ */
protected void selectPreviousTabInRun(int current) {
int tabCount = tabPane.getTabCount();
int tabIndex = getPreviousTabIndexInRun(tabCount, current);
@@ -1930,6 +2240,10 @@
navigateTo(tabIndex);
}
+ /**
+ * Select the next tab.
+ * @param current the current tab
+ */
protected void selectNextTab(int current) {
int tabIndex = getNextTabIndex(current);
@@ -1939,6 +2253,10 @@
navigateTo(tabIndex);
}
+ /**
+ * Select the previous tab.
+ * @param current the current tab
+ */
protected void selectPreviousTab(int current) {
int tabIndex = getPreviousTabIndex(current);
@@ -1948,6 +2266,12 @@
navigateTo(tabIndex);
}
+ /**
+ * Selects an adjacent run of tabs.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabIndex the index of the tab with respect to other tabs
+ * @param offset selection offset
+ */
protected void selectAdjacentRunTab(int tabPlacement,
int tabIndex, int offset) {
if ( runCount < 2 ) {
@@ -2026,6 +2350,14 @@
return focusIndex;
}
+ /**
+ * Returns the tab run offset.
+ * @param tabPlacement the placement (left, right, bottom, top) of the tab
+ * @param tabCount the tab count
+ * @param tabIndex the index of the tab with respect to other tabs
+ * @param forward forward or not
+ * @return the tab run offset
+ */
protected int getTabRunOffset(int tabPlacement, int tabCount,
int tabIndex, boolean forward) {
int run = getRunForTab(tabCount, tabIndex);
@@ -2092,15 +2424,31 @@
return offset;
}
+ /**
+ * Returns the previous tab index.
+ * @param base the base
+ * @return the previous tab index
+ */
protected int getPreviousTabIndex(int base) {
int tabIndex = (base - 1 >= 0? base - 1 : tabPane.getTabCount() - 1);
return (tabIndex >= 0? tabIndex : 0);
}
+ /**
+ * Returns the next tab index.
+ * @param base the base
+ * @return the next tab index
+ */
protected int getNextTabIndex(int base) {
return (base+1)%tabPane.getTabCount();
}
+ /**
+ * Returns the next tab index in the run.
+ * @param tabCount the tab count
+ * @param base the base
+ * @return the next tab index in the run
+ */
protected int getNextTabIndexInRun(int tabCount, int base) {
if (runCount < 2) {
return getNextTabIndex(base);
@@ -2113,6 +2461,12 @@
return next;
}
+ /**
+ * Returns the previous tab index in the run.
+ * @param tabCount the tab count
+ * @param base the base
+ * @return the previous tab index in the run
+ */
protected int getPreviousTabIndexInRun(int tabCount, int base) {
if (runCount < 2) {
return getPreviousTabIndex(base);
@@ -2125,15 +2479,31 @@
return getPreviousTabIndex(base);
}
+ /**
+ * Returns the previous tab run.
+ * @param baseRun the base run
+ * @return the previous tab run
+ */
protected int getPreviousTabRun(int baseRun) {
int runIndex = (baseRun - 1 >= 0? baseRun - 1 : runCount - 1);
return (runIndex >= 0? runIndex : 0);
}
+ /**
+ * Returns the next tab run.
+ * @param baseRun the base run
+ * @return the next tab run
+ */
protected int getNextTabRun(int baseRun) {
return (baseRun+1)%runCount;
}
+ /**
+ * Rotates the insets.
+ * @param topInsets the top insets
+ * @param targetInsets the target insets
+ * @param targetPlacement the target placement
+ */
protected static void rotateInsets(Insets topInsets, Insets targetInsets, int targetPlacement) {
switch(targetPlacement) {
@@ -2292,6 +2662,11 @@
return calculateSize(true);
}
+ /**
+ * Returns the calculated size.
+ * @param minimum use the minimum size or preferred size
+ * @return the calculated size
+ */
protected Dimension calculateSize(boolean minimum) {
int tabPlacement = tabPane.getTabPlacement();
Insets insets = tabPane.getInsets();
@@ -2346,6 +2721,12 @@
}
+ /**
+ * Returns the preferred tab area height.
+ * @param tabPlacement the tab placement
+ * @param width the width
+ * @return the preferred tab area height
+ */
protected int preferredTabAreaHeight(int tabPlacement, int width) {
FontMetrics metrics = getFontMetrics();
int tabCount = tabPane.getTabCount();
@@ -2370,6 +2751,12 @@
return total;
}
+ /**
+ * Returns the preferred tab area width.
+ * @param tabPlacement the tab placement
+ * @param height the height
+ * @return the preferred tab area widty
+ */
protected int preferredTabAreaWidth(int tabPlacement, int height) {
FontMetrics metrics = getFontMetrics();
int tabCount = tabPane.getTabCount();
@@ -2395,6 +2782,7 @@
return total;
}
+ /** {@inheritDoc} */
@SuppressWarnings("deprecation")
public void layoutContainer(Container parent) {
/* Some of the code in this method deals with changing the
@@ -2517,6 +2905,9 @@
}
}
+ /**
+ * Calculates the layout info.
+ */
public void calculateLayoutInfo() {
int tabCount = tabPane.getTabCount();
assureRectsCreated(tabCount);
@@ -2556,6 +2947,11 @@
}
}
+ /**
+ * Calculate the tab rectangles.
+ * @param tabPlacement the tab placement
+ * @param tabCount the tab count
+ */
protected void calculateTabRects(int tabPlacement, int tabCount) {
FontMetrics metrics = getFontMetrics();
Dimension size = tabPane.getSize();
@@ -2741,9 +3137,11 @@
}
- /*
- * Rotates the run-index array so that the selected run is run[0]
- */
+ /**
+ * Rotates the run-index array so that the selected run is run[0].
+ * @param tabPlacement the tab placement
+ * @param selectedRun the selected run
+ */
protected void rotateTabRuns(int tabPlacement, int selectedRun) {
for (int i = 0; i < selectedRun; i++) {
int save = tabRuns[0];
@@ -2754,6 +3152,13 @@
}
}
+ /**
+ * Normalizes the tab runs.
+ * @param tabPlacement the tab placement
+ * @param tabCount the tab count
+ * @param start the start
+ * @param max the max
+ */
protected void normalizeTabRuns(int tabPlacement, int tabCount,
int start, int max) {
boolean verticalTabRuns = (tabPlacement == LEFT || tabPlacement == RIGHT);
@@ -2822,6 +3227,13 @@
}
}
+ /**
+ * Pads the tab run.
+ * @param tabPlacement the tab placement
+ * @param start the start
+ * @param end the end
+ * @param max the max
+ */
protected void padTabRun(int tabPlacement, int start, int end, int max) {
Rectangle lastRect = rects[end];
if (tabPlacement == TOP || tabPlacement == BOTTOM) {
@@ -2853,6 +3265,11 @@
}
}
+ /**
+ * Pads selected tab.
+ * @param tabPlacement the tab placement
+ * @param selectedIndex the selected index
+ */
protected void padSelectedTab(int tabPlacement, int selectedIndex) {
if (selectedIndex >= 0) {