下面列出了javax.swing.plaf.nimbus.NimbusLookAndFeel#javax.accessibility.AccessibleContext 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private JComboBox<Object> createDirectoryComboBox(final JFileChooser fileChooser) {
JComboBox<Object> comboBox = new JComboBox<Object>() {
public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
// Must be small enough to not affect total width.
d.width = 150;
return d;
}
};
comboBox.putClientProperty(ComboBoxConstants.KEY_DO_NOT_UPDATE_WHEN_SCROLLED, true);
comboBox.putClientProperty(AccessibleContext.ACCESSIBLE_DESCRIPTION_PROPERTY, lookInLabelText);
comboBox.addActionListener(directoryComboBoxAction);
comboBox.setRenderer(createDirectoryComboBoxRenderer(fileChooser));
comboBox.setAlignmentX(JComponent.LEFT_ALIGNMENT);
comboBox.setAlignmentY(JComponent.TOP_ALIGNMENT);
comboBox.setMaximumRowCount(8);
return comboBox;
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
@Override
public Hashtable<String, Object> getDump() {
Hashtable<String, Object> result = super.getDump();
if (getToolTipText() != null) {
result.put(TOOLTIP_TEXT_DPROP, getToolTipText());
}
//System.out.println("Dump a11y = " + System.getProperty("jemmy.dump.a11y"));
if (System.getProperty("jemmy.dump.a11y") != null
&& System.getProperty("jemmy.dump.a11y").equals("on")) {
AccessibleContext a11y = getSource().getAccessibleContext();
if (a11y != null) {
result.put(A11Y_DATA, "yes");
String accName = (a11y.getAccessibleName() == null) ? "null" : a11y.getAccessibleName();
String accDesc = (a11y.getAccessibleDescription() == null) ? "null" : a11y.getAccessibleDescription();
result.put(A11Y_NAME_DPROP, accName);
result.put(A11Y_DESCRIPTION_DPROP, accDesc);
} else {
result.put(A11Y_DATA, "no");
}
}
return result;
}
static void setSelectedText(final Accessible a, final Component c, final String newText) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final int selectionStart = aet.getSelectionStart();
final int selectionEnd = aet.getSelectionEnd();
aet.replaceText(selectionStart, selectionEnd, newText);
}
}, c);
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
static int[] getSelectedTextRange(final Accessible a, final Component c) {
if (a == null) return new int[2];
return CAccessibility.invokeAndWait(new Callable<int[]>() {
public int[] call() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return new int[2];
final AccessibleText at = ac.getAccessibleText();
if (at == null) return new int[2];
final int[] ret = new int[2];
ret[0] = at.getSelectionStart();
ret[1] = at.getSelectionEnd();
return ret;
}
}, c);
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
/**
* Sets the tooltip text at <code>index</code> to <code>toolTipText</code>
* which can be <code>null</code>.
* An internal exception is raised if there is no tab at that index.
*
* @param index the tab index where the tooltip text should be set
* @param toolTipText the tooltip text to be displayed for the tab
* @exception IndexOutOfBoundsException if index is out of range
* {@code (index < 0 || index >= tab count)}
*
* @see #getToolTipTextAt
* @since 1.3
*/
@BeanProperty(preferred = true, description
= "The tooltip text at the specified tab index.")
public void setToolTipTextAt(int index, String toolTipText) {
String oldToolTipText = pages.get(index).tip;
pages.get(index).tip = toolTipText;
if ((oldToolTipText != toolTipText) && (accessibleContext != null)) {
accessibleContext.firePropertyChange(
AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY,
oldToolTipText, toolTipText);
}
if (!haveRegistered && toolTipText != null) {
ToolTipManager.sharedInstance().registerComponent(this);
haveRegistered = true;
}
}
protected String getLink(Point p) {
final AccessibleContext aC = getAccessibleContext();
if (aC instanceof AccessibleJLabel) {
final AccessibleJLabel aL = (AccessibleJLabel) aC;
final AccessibleText aT = aL.getAccessibleText();
if (aT == null) {
return null;
}
final int index = aL.getIndexAtPoint(p);
for (final LinkDescriptor entry : listLinks) {
if (index >= entry.getStart() && index <= entry.getEnd()) {
return entry.getUrl();
}
}
}
return null;
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
static void setSelectedTextRange(final Accessible a, final Component c, final int startIndex, final int endIndex) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final boolean validRange = (startIndex >= 0) && (endIndex >= startIndex) && (endIndex <= aet.getCharCount());
if (!validRange) return;
aet.selectText(startIndex, endIndex);
}
}, c);
}
private void initAccessibility() {
ResourceBundle bundle = NbBundle.getBundle(ResultView.class);
AccessibleContext accessCtx;
OutlineView outlineView = resultsOutlineSupport.getOutlineView();
accessCtx = outlineView.getHorizontalScrollBar().getAccessibleContext();
accessCtx.setAccessibleName(
bundle.getString("ACSN_HorizontalScrollbar")); //NOI18N
accessCtx = outlineView.getVerticalScrollBar().getAccessibleContext();
accessCtx.setAccessibleName(
bundle.getString("ACSN_VerticalScrollbar")); //NOI18N
accessCtx = outlineView.getAccessibleContext();
accessCtx.setAccessibleName(
bundle.getString("ACSN_ResultTree")); //NOI18N
accessCtx.setAccessibleDescription(
bundle.getString("ACSD_ResultTree")); //NOI18N
}
/**
* Sets the Accessibility MEMBER_OF property to denote that
* these components work together as a group. Each object
* is set to be a MEMBER_OF an array that contains all of
* the objects in the group, including itself.
*
* @param components The list of objects that are related
*/
void buildAccessibleGroup(Vector components) {
AccessibleContext context = null;
int numComponents = components.size();
Object[] group = components.toArray();
Object object = null;
for (int i = 0; i < numComponents; ++i) {
object = components.elementAt(i);
if (object instanceof Accessible) {
context = ((Accessible)components.elementAt(i)).
getAccessibleContext();
context.getAccessibleRelationSet().add(
new AccessibleRelation(
AccessibleRelation.MEMBER_OF, group));
}
}
}
static void setSelectedText(final Accessible a, final Component c, final String newText) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final int selectionStart = aet.getSelectionStart();
final int selectionEnd = aet.getSelectionEnd();
aet.replaceText(selectionStart, selectionEnd, newText);
}
}, c);
}
static void setSelectedText(final Accessible a, final Component c, final String newText) {
if (a == null) return;
CAccessibility.invokeLater(new Runnable() {
public void run() {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return;
final AccessibleEditableText aet = ac.getAccessibleEditableText();
if (aet == null) return;
final int selectionStart = aet.getSelectionStart();
final int selectionEnd = aet.getSelectionEnd();
aet.replaceText(selectionStart, selectionEnd, newText);
}
}, c);
}
public final void setText(@Nullable String text) {
text = StringUtil.notNullize(text);
if (text.equals(myText)) {
return;
}
String oldAccessibleName = null;
if (accessibleContext != null) {
oldAccessibleName = accessibleContext.getAccessibleName();
}
myText = text;
if ((accessibleContext != null) && !StringUtil.equals(accessibleContext.getAccessibleName(), oldAccessibleName)) {
accessibleContext.firePropertyChange(AccessibleContext.ACCESSIBLE_VISIBLE_DATA_PROPERTY, oldAccessibleName, accessibleContext.getAccessibleName());
}
setPreferredSize(getPanelDimensionFromFontMetrics(myText));
revalidate();
repaint();
}
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new JComponent.AccessibleJComponent() {
public AccessibleRole getAccessibleRole() {
return AccessibleRole.PANEL;
}
public String getAccessibleName() {
return Bundle.ProfilerWindow_accessName(getDisplayName());
}
public String getAccessibleDescription() {
ProfilerFeature selected = featuresView == null ? null :
featuresView.getSelectedFeature();
return selected == null ? WelcomePanel.CAPTION :
(selected.getName() + " " + selected.getDescription()); // NOI18N
}
};
}
return accessibleContext;
}
private static JButton createButton(final Icon icon, final Action action,
final boolean close) {
JButton button = new JButton(action) {
@Override
public boolean isRolloverEnabled() {
return true;
}
};
if (close) {
button.putClientProperty("JButton.borderless.hover",
UIManager.getColor("Windows.TitlePane.close.rollOverColor"));
button.putClientProperty("JButton.borderless.click",
UIManager.getColor("Windows.TitlePane.close.clickColor"));
}
button.putClientProperty("JButton.noBorderlessOverwrite", true);
button.setFocusable(false);
button.setOpaque(false);
button.setRolloverEnabled(true);
button.putClientProperty("JButton.variant", "borderlessRectangular");
button.putClientProperty("paintActive", Boolean.TRUE);
button.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, button.getText());
button.putClientProperty("JToolTip.style", "plain");
button.setToolTipText(button.getText());
button.setIcon(icon);
button.setText(null);
return button;
}
public AccessibleContext getAccessibleContext() {
AccessibleContext ac = super.getAccessibleContext();
if (uiKey != null) {
ac.setAccessibleName(UIManager.getString(uiKey));
uiKey = null;
}
return ac;
}
protected void setupButton(final AbstractButton button, final String accessibleName, final String tipText) {
button.putClientProperty(DarkButtonUI.KEY_NO_BORDERLESS_OVERWRITE, true);
button.putClientProperty(DarkButtonUI.KEY_SQUARE, true);
button.setAlignmentX(JComponent.LEFT_ALIGNMENT);
button.setAlignmentY(JComponent.CENTER_ALIGNMENT);
button.setToolTipText(tipText);
button.putClientProperty(AccessibleContext.ACCESSIBLE_NAME_PROPERTY, accessibleName);
}
@NbBundle.Messages({"ACSN_ResultPanelTree=Information about passed and failed tests",
"ACSD_ResultPanelTree=Displays in a tree structure information about passed, failed and erroneous tests"})
private void initAccessibility() {
AccessibleContext accContext = tree.getAccessibleContext();
accContext.setAccessibleName(Bundle.ACSN_ResultPanelTree());
accContext.setAccessibleDescription(Bundle.ACSD_ResultPanelTree());
}
public static CAccessible getCAccessible(final Accessible a) {
if (a == null) return null;
AccessibleContext context = a.getAccessibleContext();
try {
final CAccessible cachedCAX = (CAccessible) nativeAXResourceField.get(context);
if (cachedCAX != null) return cachedCAX;
final CAccessible newCAX = new CAccessible(a);
nativeAXResourceField.set(context, newCAX);
return newCAX;
} catch (final Exception e) {
e.printStackTrace();
return null;
}
}
public AccessibleContext getAccessibleContext() {
AccessibleContext ac = super.getAccessibleContext();
if (uiKey != null) {
ac.setAccessibleName(UIManager.getString(uiKey));
uiKey = null;
}
return ac;
}
@Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleJComponent() {
@Override
public AccessibleRole getAccessibleRole() {
return AccessibleRole.PANEL;
}
};
accessibleContext.setAccessibleName(NbBundle.getMessage(AnnotationView.class, "ACSN_AnnotationView")); //NOI18N
accessibleContext.setAccessibleDescription(NbBundle.getMessage(AnnotationView.class, "ACSD_AnnotationView")); //NOI18N
}
return accessibleContext;
}
public static BasicComboPopup getPopup() {
AccessibleContext c = cb.getAccessibleContext();
for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
return (BasicComboPopup) c.getAccessibleChild(i);
}
}
throw new AssertionError("No BasicComboPopup found");
}
@Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleExplorerList();
}
return accessibleContext;
}
static AccessibleEditableText getAccessibleEditableText(final Accessible a, final Component c) {
if (a == null) return null;
return CAccessibility.invokeAndWait(new Callable<AccessibleEditableText>() {
public AccessibleEditableText call() throws Exception {
final AccessibleContext ac = a.getAccessibleContext();
if (ac == null) return null;
return ac.getAccessibleEditableText();
}
}, c);
}
/**
* Maps {@code JComponent.getAccessibleContext()} through queue
*/
public AccessibleContext getAccessibleContext() {
return (runMapping(new MapAction<AccessibleContext>("getAccessibleContext") {
@Override
public AccessibleContext map() {
return getSource().getAccessibleContext();
}
}));
}
@Override
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleJSplitButton();
}
return accessibleContext;
}