com.jidesoft.swing.SidePane Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jide-oss Show documentation
Show all versions of jide-oss Show documentation
JIDE Common Layer (Professional Swing Components)
/*
* @(#)SidePane.java
*
* Copyright 2002 JIDE Software Inc. All rights reserved.
*/
package com.jidesoft.swing;
import com.jidesoft.plaf.LookAndFeelFactory;
import com.jidesoft.plaf.SidePaneUI;
import com.jidesoft.plaf.UIDefaultsLookup;
import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleRole;
import javax.accessibility.AccessibleStateSet;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
/**
* SidePane is a component that can display several buttons
* horzontally or vertically. It usually attaches to side of
* a JFrame.
*
* Buttons in SidePane can be grouped. Each group is called {@link SidePaneGroup}.
* Each button in the group is called {@link SidePaneItem}.
*/
public class SidePane extends JPanel implements SwingConstants, Accessible {
/**
* A list holds SideGroup
*/
private final List _groups = new ArrayList();
/**
* the side which this component is attached to.
* Possible values are:
* SwingConstants.NORTH
* SwingConstants.SOUTH
* SwingConstants.WEST
* SwingConstants.EAST
*
*/
private int _attachedSide;
/**
* if action is fired when mouse rollover.
*/
private boolean _rollover = true;
/**
* @see #getUIClassID
* @see #readObject
*/
private static final String uiClassID = "SidePaneUI";
/**
* Constructor thats takes the side which this component is attached to.
*
* @param attachedSide the side which this component is attached to.
* Possible values are:
* SwingConstants.NORTH
* SwingConstants.SOUTH
* SwingConstants.WEST
* SwingConstants.EAST
*
* @throws IllegalArgumentException if the value is not one of NORTH, SOUTH, WEST, or EAST.
*/
public SidePane(int attachedSide) {
setAttachedSide(attachedSide);
// I'm registered to do tool tips so we can draw tips for the renderers
ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
toolTipManager.registerComponent(this);
}
/**
* Returns the UI object which implements the L&F for this component.
*
* @return a TabbedPaneUI
object
* @see #setUI
*/
@Override
public SidePaneUI getUI() {
return (SidePaneUI) ui;
}
/**
* Sets the UI object which implements the L&F for this component.
*
* @param ui the new UI object
* @see javax.swing.UIDefaults#getUI
*/
public void setUI(SidePaneUI ui) {
super.setUI(ui);
}
/**
* Resets the UI property to a value from the current look and feel.
*
* @see javax.swing.JComponent#updateUI
*/
@Override
public void updateUI() {
if (UIDefaultsLookup.get(uiClassID) == null) {
LookAndFeelFactory.installJideExtension();
}
setUI((SidePaneUI) UIManager.getUI(this));
}
/**
* Returns the name of the UI class that implements the
* L&F for this component.
*
* @return the string "TabbedPaneUI"
* @see javax.swing.JComponent#getUIClassID
* @see javax.swing.UIDefaults#getUI
*/
@Override
public String getUIClassID() {
return uiClassID;
}
/**
* Adds a SidePaneGroup to this component.
* Do nothing if there is nothing in the group.
*
* @param group the group to be added
*/
public void addGroup(SidePaneGroup group) {
getGroups().add(group);
}
/**
* Removes a SidePaneGroup from this component.
*
* @param group the group to be removed
*/
public void removeGroup(SidePaneGroup group) {
getGroups().remove(group);
}
/**
* Removes a SidePaneGroup at a spefific index from this component.
*
* @param index position of the group to be removed
*/
public void removeGroup(int index) {
removeGroup(getGroups().get(index));
}
/**
* Gets the list of groups in this components.
*
* @return the list of groups
*/
public List getGroups() {
return _groups;
}
/**
* Gets attached side.
*
* @return the attached side
*/
public int getAttachedSide() {
return _attachedSide;
}
/**
* Sets the attached side. It will call updateUI
automatically.
* Possible values are:
* SwingConstants.NORTH
* SwingConstants.SOUTH
* SwingConstants.WEST
* SwingConstants.EAST
*
*
* Note: Please call this method before this component is rendered on screen.
*
* @param attachedSide the attached side
* @throws IllegalArgumentException if the value is not one of valid values
*/
public void setAttachedSide(int attachedSide) {
if (attachedSide != SwingConstants.NORTH && attachedSide != SwingConstants.SOUTH &&
attachedSide != SwingConstants.WEST && attachedSide != SwingConstants.EAST) {
throw new IllegalArgumentException("illegal attached side: must be NORTH, SOUTH, WEST, or EAST");
}
_attachedSide = attachedSide;
updateUI();
}
/**
* Is the side pane expand when mouse moves over?
*
* @return if true, side pane will expand when mouse moves over.
*/
public boolean isRollover() {
return _rollover;
}
/**
* Set if the side pane expand when mouse moves over.
*
* @param rollover the flag
*/
public void setRollover(boolean rollover) {
_rollover = rollover;
updateUI();
}
@Override
public String getToolTipText(MouseEvent event) {
if (getUI() != null && !isRollover()) {
int index = getUI().getSelectedItemIndex(event.getPoint());
SidePaneItem item = getUI().getItemForIndex(index);
if (item != null && item.getComponent() instanceof JComponent) {
return ((JComponent) item.getComponent()).getToolTipText();
}
}
return null;
}
/**
* Gets the AccessibleContext associated with this JToolBar.
* For tool bars, the AccessibleContext takes the form of an
* AccessibleJToolBar.
* A new AccessibleJToolBar instance is created if necessary.
*
* @return an AccessibleJToolBar that serves as the
* AccessibleContext of this JToolBar
*/
@Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleSidePane();
}
return accessibleContext;
}
/**
* This class implements accessibility support for the
* SidePane
class. It provides an implementation of the
* Java Accessibility API appropriate to side pane user-interface elements.
*/
protected class AccessibleSidePane extends AccessibleJPanel {
private static final long serialVersionUID = -6914188774912169441L;
/**
* Get the state of this object.
*
* @return an instance of AccessibleStateSet containing the current
* state set of the object
* @see javax.accessibility.AccessibleState
*/
@Override
public AccessibleStateSet getAccessibleStateSet() {
return super.getAccessibleStateSet();
}
/**
* Get the role of this object.
*
* @return an instance of AccessibleRole describing the role of the object
*/
@Override
public AccessibleRole getAccessibleRole() {
return AccessibleRole.PAGE_TAB_LIST; // consider it as a tab list
}
} // inner class AccessibleSidePane
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy