opends/src/guitools/org/opends/guitools/controlpanel/ControlPanel.java
@@ -207,7 +207,7 @@ private static void initLookAndFeel() throws Throwable { UIFactory.initialize(); UIFactory.initializeLookAndFeel(); } private void updateLocalOrRemotePanel(RootPaneContainer localOrRemote) opends/src/guitools/org/opends/guitools/controlpanel/ControlPanelLauncher.java
@@ -37,7 +37,6 @@ import javax.swing.SwingUtilities; import org.opends.guitools.controlpanel.ui.ColorAndFontConstants; import org.opends.guitools.controlpanel.util.ControlPanelLog; import org.opends.messages.AdminToolMessages; import org.opends.messages.Message; @@ -215,8 +214,7 @@ AdminToolMessages.INFO_CONTROL_PANEL_TITLE.get( DynamicConstants.PRODUCT_NAME), Message.class); Utils.setMacOSXMenuBar(title); ColorAndFontConstants.initialize(); UIFactory.initialize(); UIFactory.initializeLookAndFeel(); } } opends/src/guitools/org/opends/guitools/controlpanel/browser/IconPool.java
@@ -158,6 +158,7 @@ if (description != null) { icon.setDescription(description); icon.getAccessibleContext().setAccessibleDescription(description); } return icon; } opends/src/guitools/org/opends/guitools/controlpanel/ui/ColorAndFontConstants.java
@@ -198,7 +198,7 @@ */ public static final Font expanderFont = defaultFont.deriveFont(Font.BOLD); /** * The inline help font. * The in-line help font. */ public static final Font inlineHelpFont = defaultFont.deriveFont( (float)(defaultFont.getSize() - 2)); @@ -262,12 +262,4 @@ * Specifies the font for the command-line output in the detail panel. */ public static final Font outputFont = Font.decode("Monospaced-PLAIN-12"); /** * This method initialize the constants used by this class. It must be called * before other classes modify the UIManager constants. */ public static void initialize() { } } opends/src/guitools/org/opends/guitools/controlpanel/ui/ImportLDIFPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008-2009 Sun Microsystems, Inc. * Copyright 2008-2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -181,6 +181,8 @@ add(lNoBackendsFound, gbc); lNoBackendsFound.setVisible(false); gbc.insets.top = 10; lBackend.setLabelFor(backends); lNoBackendsFound.setLabelFor(lBackend); gbc.gridx = 0; gbc.gridy ++; @@ -193,6 +195,7 @@ gbc.gridx = 1; gbc.insets.left = 10; file = Utilities.createTextField(); lFile.setLabelFor(file); documentListener = new DocumentListener() { /** @@ -242,6 +245,7 @@ gbc.insets.left = 10; gbc.gridy ++; add(lRemoteFileHelp, gbc); lRemoteFileHelp.setLabelFor(file); gbc.gridx = 1; gbc.gridy ++; @@ -265,6 +269,7 @@ overwrite = Utilities.createRadioButton( INFO_CTRL_PANEL_IMPORT_OVERWRITE_LABEL.get()); overwrite.setSelected(true); lImportType.setLabelFor(overwrite); append = Utilities.createRadioButton(INFO_CTRL_PANEL_IMPORT_APPEND_LABEL.get()); @@ -314,6 +319,7 @@ rejectNotSchemaCompliant.setSelected(true); gbc.insets.left = 10; add(rejectNotSchemaCompliant, gbc); lSchemaValidation.setLabelFor(rejectNotSchemaCompliant); gbc.gridx = 0; gbc.gridy ++; @@ -328,6 +334,7 @@ doDNValidationAfter.setSelected(false); gbc.insets.left = 10; add(doDNValidationAfter, gbc); lDNValidation.setLabelFor(doDNValidationAfter); gbc.gridx = 0; gbc.gridy ++; @@ -344,6 +351,7 @@ INFO_CTRL_PANEL_IMPORT_THREADS_TOOLTIP.get().toString()); gbc.insets.left = 10; add(threads, gbc); lThreads.setLabelFor(threads); gbc.insets.top = 3; gbc.gridy ++; @@ -365,6 +373,7 @@ writeRejects.setSelected(false); gbc.insets.left = 10; add(writeRejects, gbc); lRejectsFile.setLabelFor(writeRejects); gbc.gridx = 1; gbc.gridy++; @@ -403,6 +412,7 @@ INFO_CTRL_PANEL_OVERWRITE_REJECTS_FILE_LABEL.get()); overwriteRejectsFile.setOpaque(false); add(overwriteRejectsFile, gbc); lRemoteRejectsHelp.setLabelFor(overwriteRejectsFile); ChangeListener changeListener = new ChangeListener() { @@ -435,6 +445,7 @@ writeSkips.setSelected(false); gbc.insets.left = 10; add(writeSkips, gbc); lSkipsFile.setLabelFor(writeSkips); gbc.gridx = 1; gbc.gridy++; @@ -473,6 +484,7 @@ INFO_CTRL_PANEL_OVERWRITE_SKIPS_FILE_LABEL.get()); overwriteSkipsFile.setOpaque(false); add(overwriteSkipsFile, gbc); lRemoteSkipsHelp.setLabelFor(overwriteSkipsFile); changeListener = new ChangeListener() { opends/src/guitools/org/opends/guitools/controlpanel/ui/InclusionExclusionPanel.java
@@ -169,6 +169,7 @@ dnsToInclude = Utilities.createTextArea(Message.EMPTY, 5, 25); final JScrollPane scrollDns = Utilities.createScrollPane(dnsToInclude); panel.add(scrollDns, gbc); lDnsToInclude.setLabelFor(dnsToInclude); gbc.insets.top = 2; gbc.gridy ++; @@ -193,6 +194,7 @@ gbc.weightx = 1.0; attributesToInclude = Utilities.createMediumTextField(); panel.add(attributesToInclude, gbc); lAttributesToInclude.setLabelFor(attributesToInclude); gbc.insets.top = 2; gbc.gridy ++; @@ -216,6 +218,7 @@ gbc.insets.left = 10; inclusionFilter = Utilities.createMediumTextField(); panel.add(inclusionFilter, gbc); lInclusionFilter.setLabelFor(inclusionFilter); addExtraComponents(panel, extraComponentLabels, extraComponents, gbc, labelInsetLeft); @@ -284,6 +287,7 @@ gbc.insets.left = 10; dnsToExclude = Utilities.createTextArea(Message.EMPTY, 5, 0); final JScrollPane scrollDns = Utilities.createScrollPane(dnsToExclude); lDnsToExclude.setLabelFor(dnsToExclude); panel.add(scrollDns, gbc); gbc.insets.top = 2; @@ -309,12 +313,14 @@ gbc.weightx = 1.0; attributesToExclude = Utilities.createTextField(); panel.add(attributesToExclude, gbc); lAttributesToExclude.setLabelFor(dnsToExclude); gbc.insets.top = 2; gbc.gridy ++; final JLabel lAttributesExplanation = Utilities.createInlineHelpLabel( INFO_CTRL_PANEL_SEPARATE_ATTRIBUTES_COMMA.get()); panel.add(lAttributesExplanation, gbc); lAttributesExplanation.setLabelFor(dnsToExclude); gbc.gridy ++; gbc.gridx = 0; @@ -332,6 +338,7 @@ gbc.insets.left = 10; exclusionFilter = Utilities.createTextField(); panel.add(exclusionFilter, gbc); lExclusionFilter.setLabelFor(exclusionFilter); addExtraComponents(panel, extraComponentLabels, extraComponents, gbc, labelInsetLeft); @@ -392,6 +399,8 @@ gbc.weightx = 1.0; gbc.insets.left = 10; panel.add(extraComponents[i], gbc); extraComponentLabels[i].setLabelFor(extraComponents[i]); } } } opends/src/guitools/org/opends/guitools/controlpanel/ui/JavaPropertiesPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008-2009 Sun Microsystems, Inc. * Copyright 2008-2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -53,6 +53,7 @@ import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; @@ -102,7 +103,7 @@ private AttributeCellEditor editor; private JLabel lInitContents; private JEditorPane lInitContents; private JCheckBox showAll; @@ -225,6 +226,10 @@ INFO_CTRL_PANEL_JAVA_HOME_LABEL.get()); useOpenDSJavaHome = Utilities.createRadioButton(Message.EMPTY); useOpenDSJavaHome.setOpaque(false); useOpenDSJavaHome.getAccessibleContext().setAccessibleName( INFO_CTRL_PANEL_USE_OPENDS_JAVA_HOME.get().toString()+" "+ INFO_CTRL_PANEL_USE_OPENDS_JAVA_HOME_HELP.get()); lJavaHome.setLabelFor(useOpenDSJavaHome); gbc.gridx = 0; gbc.gridy = 0; gbc.weightx = 0.0; @@ -250,6 +255,10 @@ gbc.gridwidth = 1; useSpecifiedJavaHome = Utilities.createRadioButton(Message.EMPTY); useSpecifiedJavaHome.setOpaque(false); useSpecifiedJavaHome.getAccessibleContext().setAccessibleName( INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_HOME.get().toString() + " "+INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_HOME_HELP.get()); useOpenDSJavaHomeLabel.setLabelFor(useSpecifiedJavaHome); LabelWithHelpIcon useSpecifiedJavaHomeLabel = new LabelWithHelpIcon( INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_HOME.get(), INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_HOME_HELP.get()); @@ -260,6 +269,7 @@ add(useSpecifiedJavaHomeLabel, gbc); gbc.gridx ++; javaHome = Utilities.createTextField(); useSpecifiedJavaHomeLabel.setLabelFor(javaHome); gbc.weightx = 1.0; gbc.insets.left = 5; add(javaHome, gbc); @@ -300,9 +310,13 @@ lJavaArgs = Utilities.createPrimaryLabel( INFO_CTRL_PANEL_JAVA_ARGUMENTS_LABEL.get()); useSpecifiedJavaArgs = Utilities.createRadioButton(Message.EMPTY); useSpecifiedJavaArgs.getAccessibleContext().setAccessibleName( INFO_CTRL_PANEL_USE_OPENDS_JAVA_ARGS.get().toString() + " "+INFO_CTRL_PANEL_USE_OPENDS_JAVA_ARGS_HELP.get()); useSpecifiedJavaArgs.setOpaque(false); useOpenDSJavaArgs = Utilities.createRadioButton(Message.EMPTY); useOpenDSJavaArgs.setOpaque(false); lJavaArgs.setLabelFor(useOpenDSJavaArgs); gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 1; @@ -321,12 +335,16 @@ gbc.insets.left = 0; p.add(useOpenDSJavaArgsLabel, gbc); gbc.gridx = 1; gbc.gridy ++; gbc.insets.top = 10; gbc.insets.left = 10; p.add(useSpecifiedJavaArgs, gbc); useOpenDSJavaArgsLabel.setLabelFor(useSpecifiedJavaArgs); useSpecifiedJavaArgs.getAccessibleContext().setAccessibleName( INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_ARGS.get().toString() + " "+INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_ARGS_HELP.get()); gbc.gridx ++; LabelWithHelpIcon useSpecifiedJavaArgsLabel = new LabelWithHelpIcon( INFO_CTRL_PANEL_USE_SPECIFIED_OPENDS_JAVA_ARGS.get(), @@ -337,6 +355,7 @@ group = new ButtonGroup(); group.add(useSpecifiedJavaArgs); group.add(useOpenDSJavaArgs); useSpecifiedJavaArgsLabel.setLabelFor(useOpenDSJavaArgs); argumentsTableModel = new JavaArgumentsTableModel(); LDAPEntryTableCellRenderer renderer = new LDAPEntryTableCellRenderer(); @@ -359,7 +378,9 @@ gbc.gridwidth = 2; argumentsScroll = Utilities.createScrollPane(argumentsTable); p.add(argumentsScroll, gbc); lInitContents = Utilities.createDefaultLabel(READING_JAVA_SETTINGS); lInitContents = Utilities.makePlainTextPane( READING_JAVA_SETTINGS.toString(), ColorAndFontConstants.defaultFont); gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.CENTER; p.add(lInitContents, gbc); opends/src/guitools/org/opends/guitools/controlpanel/ui/LocalOrRemotePanel.java
@@ -49,8 +49,10 @@ import javax.naming.directory.SearchControls; import javax.naming.directory.SearchResult; import javax.naming.ldap.InitialLdapContext; import javax.swing.Box; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JTextField; @@ -96,7 +98,7 @@ private JLabel dnLabel; private String usedUrl; private JLabel localInstallLabel; private JLabel localInstall; private JEditorPane localInstall; private JLabel localNotRunning; @@ -287,12 +289,14 @@ INFO_CTRL_PANEL_REMOTE_SERVER.get()})); combo.setSelectedIndex(0); gbc.gridwidth = 2; add(Utilities.createDefaultLabel(INFO_CTRL_PANEL_LOCAL_OR_REMOTE.get()), gbc); JLabel l = Utilities.createDefaultLabel( INFO_CTRL_PANEL_LOCAL_OR_REMOTE.get()); add(l, gbc); gbc.gridwidth = 1; gbc.insets.top = 10; gbc.gridy ++; add(combo, gbc); l.setLabelFor(combo); gbc.gridx = 1; localNotRunning = Utilities.createDefaultLabel(); @@ -300,8 +304,11 @@ INFO_CTRL_PANEL_LOCAL_SERVER_NOT_RUNNING.get()); gbc.insets.left = 10; add(localNotRunning, gbc); localNotRunning.setFocusable(true); hostName = Utilities.createMediumTextField(); hostName.setText(UserData.getDefaultHostName()); hostName.setToolTipText( INFO_CTRL_PANEL_REMOTE_SERVER_TOOLTIP.get().toString()); add(hostName, gbc); gbc.insets.top = 10; gbc.gridy ++; @@ -329,11 +336,16 @@ add(localInstallLabel, gbc); gbc.gridx = 1; gbc.insets.left = 10; gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; localInstall = Utilities.createDefaultLabel(); localInstall.setText(localServerInstallPath); gbc.weightx = 0.1; localInstall = Utilities.makeHtmlPane(localServerInstallPath, ColorAndFontConstants.defaultFont); add(localInstall, gbc); localInstallLabel.setLabelFor(localInstall); gbc.gridx ++; gbc.weightx = 1.0; gbc.insets.left = 0; add(Box.createHorizontalGlue(), gbc); gbc.gridy ++; gbc.insets.top = 10; @@ -351,6 +363,7 @@ gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; add(port, gbc); portLabel.setLabelFor(port); gbc.gridy ++; gbc.gridx = 0; @@ -367,6 +380,7 @@ gbc.fill = GridBagConstraints.HORIZONTAL; gbc.insets.left = 10; add(dn, gbc); dnLabel.setLabelFor(dn); gbc.insets.top = 10; gbc.insets.left = 0; @@ -384,6 +398,7 @@ gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; add(pwd, gbc); pwdLabel.setLabelFor(pwd); addBottomGlue(gbc); } opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusGenericPanel.java
@@ -1157,6 +1157,7 @@ message.setText(Utilities.applyFont(msg.toString(), ColorAndFontConstants.defaultFont)); cardLayout.show(cardPanel, MESSAGE_PANEL); message.requestFocusInWindow(); } /** @@ -1169,6 +1170,7 @@ updateErrorPane(message, title, ColorAndFontConstants.errorTitleFont, msg, ColorAndFontConstants.defaultFont); cardLayout.show(cardPanel, MESSAGE_PANEL); message.requestFocusInWindow(); } /** opends/src/guitools/org/opends/guitools/controlpanel/ui/StatusPanel.java
@@ -22,7 +22,7 @@ * CDDL HEADER END * * * Copyright 2008-2009 Sun Microsystems, Inc. * Copyright 2008-2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui; @@ -45,11 +45,11 @@ import javax.swing.Box; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JEditorPane; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import org.opends.guitools.controlpanel.datamodel.BackendDescriptor; @@ -60,7 +60,8 @@ import org.opends.guitools.controlpanel.datamodel.ServerDescriptor; import org.opends.guitools.controlpanel.event.ConfigurationChangeEvent; import org.opends.guitools.controlpanel.event.ScrollPaneBorderListener; import org.opends.guitools.controlpanel.ui.components.LabelWithHelpIcon; import org.opends.guitools.controlpanel.ui.components. SelectableLabelWithHelpIcon; import org.opends.guitools.controlpanel.ui.renderer.BaseDNCellRenderer; import org.opends.guitools.controlpanel.ui.renderer.CustomCellRenderer; import org.opends.guitools.controlpanel.util.Utilities; @@ -79,18 +80,18 @@ class StatusPanel extends StatusGenericPanel { private static final long serialVersionUID = -6493442314639004717L; // The placeholder where we display errors. private JLabel serverStatus; private LabelWithHelpIcon currentConnections; private JLabel hostName; private JLabel administrativeUsers; private JLabel installPath; private JLabel instancePath; private JLabel opendsVersion; private LabelWithHelpIcon javaVersion; private JLabel adminConnector; private JLabel dbTableEmpty; private JLabel connectionHandlerTableEmpty; // The place holder where we display errors. private JEditorPane serverStatus; private SelectableLabelWithHelpIcon currentConnections; private JEditorPane hostName; private JEditorPane administrativeUsers; private JEditorPane installPath; private JEditorPane instancePath; private JEditorPane opendsVersion; private SelectableLabelWithHelpIcon javaVersion; private JEditorPane adminConnector; private JEditorPane dbTableEmpty; private JEditorPane connectionHandlerTableEmpty; private JLabel lInstancePath; private JButton stopButton; private JButton startButton; @@ -328,7 +329,7 @@ } } serverStatus.setText(getStatusLabel(desc)); setText(serverStatus, getStatusLabel(desc)); boolean isRunning = desc.getStatus() == ServerDescriptor.ServerStatus.STARTED; @@ -371,7 +372,7 @@ } } hostName.setText(desc.getHostname()); setText(hostName, desc.getHostname()); Set<DN> rootUsers = desc.getAdministrativeUsers(); @@ -390,35 +391,33 @@ if (rootUsers.size() > 0) { String htmlString = "<html>"+Utilities.applyFont( Utilities.getStringFromCollection(sortedRootUsers, "<br>"), administrativeUsers.getFont()); administrativeUsers.setText(htmlString); setText(administrativeUsers, Utilities.getStringFromCollection(sortedRootUsers, "<br>")); } else { administrativeUsers.setText( setText(administrativeUsers, INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); } String install = desc.getInstallPath(); if (install != null) { installPath.setText(install); setText(installPath, install); } else { installPath.setText(INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); setText(installPath, INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); } String instance = desc.getInstancePath(); if (instance != null) { instancePath.setText(instance); setText(instancePath, instance); } else { instancePath.setText(INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); setText(instancePath, INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); } instancePath.setVisible(!desc.sameInstallAndInstance()); @@ -426,11 +425,11 @@ if (desc.getOpenDSVersion() != null) { opendsVersion.setText(desc.getOpenDSVersion()); setText(opendsVersion, desc.getOpenDSVersion()); } else { opendsVersion.setText(INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); setText(opendsVersion, INFO_NOT_AVAILABLE_SHORT_LABEL.get().toString()); } if (!isRunning) @@ -462,7 +461,7 @@ } } adminConnector.setText( setText(adminConnector, getAdminConnectorStringValue(desc.getAdminConnector())); Set<BaseDNDescriptor> baseDNs = new HashSet<BaseDNDescriptor>(); @@ -514,6 +513,12 @@ Utilities.updateViewPositions(pos); } private void setText(JEditorPane pane, String htmlText) { pane.setText(Utilities.applyFont(htmlText, ColorAndFontConstants.defaultFont)); } /** * Creates the server status subsection panel. * @return the server status subsection panel. @@ -527,8 +532,7 @@ gbc.weightx = 1.0; gbc.insets = new Insets(0, 0, 0, 0); p.setBorder(Utilities.makeTitledBorder( INFO_CTRL_PANEL_SERVER_STATUS_TITLE_BORDER.get())); setTitleBorder(p, INFO_CTRL_PANEL_SERVER_STATUS_TITLE_BORDER.get()); JPanel auxPanel = new JPanel(new GridBagLayout()); auxPanel.setOpaque(false); gbc.anchor = GridBagConstraints.WEST; @@ -541,8 +545,11 @@ statusPanel.setOpaque(false); gbc.gridwidth = 6; gbc.weightx = 0.0; serverStatus = Utilities.createDefaultLabel(); serverStatus = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); statusPanel.add(serverStatus, gbc); //l.setFocusable(true); l.setLabelFor(serverStatus); gbc.gridwidth--; stopButton = Utilities.createButton(INFO_STOP_BUTTON_LABEL.get()); @@ -620,12 +627,15 @@ l = Utilities.createPrimaryLabel( INFO_CTRL_PANEL_OPEN_CONNECTIONS_LABEL.get()); auxPanel.add(l, gbc); currentConnections = new LabelWithHelpIcon(Message.EMPTY, null); currentConnections = new SelectableLabelWithHelpIcon(Message.EMPTY, null); gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.insets.left = 5; auxPanel.add(currentConnections, gbc); l.setFocusable(true); l.setLabelFor(currentConnections); gbc.insets.top = 2; gbc.insets.right = 5; gbc.insets.left = 5; @@ -653,8 +663,7 @@ gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.weightx = 1.0; p.setBorder(Utilities.makeTitledBorder( INFO_CTRL_PANEL_SERVER_DETAILS_TITLE_BORDER.get())); setTitleBorder(p, INFO_CTRL_PANEL_SERVER_DETAILS_TITLE_BORDER.get()); JPanel auxPanel = new JPanel(new GridBagLayout()); auxPanel.setOpaque(false); gbc.anchor = GridBagConstraints.NORTHWEST; @@ -678,13 +687,19 @@ }; lInstancePath = leftLabels[3]; hostName = Utilities.createDefaultLabel(); administrativeUsers = Utilities.createDefaultLabel(); installPath = Utilities.createDefaultLabel(); instancePath = Utilities.createDefaultLabel(); opendsVersion = Utilities.createDefaultLabel(); javaVersion = new LabelWithHelpIcon(Message.EMPTY, null); adminConnector = Utilities.createDefaultLabel(); hostName = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); administrativeUsers = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); installPath = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); instancePath = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); opendsVersion = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); javaVersion = new SelectableLabelWithHelpIcon(Message.EMPTY, null); adminConnector = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); JComponent[] rightLabels = { @@ -706,6 +721,8 @@ gbc.gridwidth = GridBagConstraints.REMAINDER; gbc.insets.left = 5; auxPanel.add(rightLabels[i], gbc); leftLabels[i].setLabelFor(rightLabels[i]); } gbc.insets.top = 2; @@ -750,13 +767,17 @@ p.add(connectionHandlersTable, gbc); connectionHandlerTableEmpty = Utilities.createPrimaryLabel( INFO_CTRL_PANEL_NO_CONNECTION_HANDLER_FOUND.get()); connectionHandlerTableEmpty.setHorizontalAlignment(SwingConstants.CENTER); Utilities.makeHtmlPane( INFO_CTRL_PANEL_NO_CONNECTION_HANDLER_FOUND.get().toString(), ColorAndFontConstants.primaryFont); gbc.insets.top = 5; gbc.anchor = GridBagConstraints.CENTER; gbc.fill = GridBagConstraints.NONE; p.add(connectionHandlerTableEmpty, gbc); connectionHandlerTableEmpty.setVisible(false); l.setLabelFor(connectionHandlersTable); return p; } @@ -786,6 +807,7 @@ renderer); noReplicatedBaseDNsTable.setVisible(false); noReplicatedBaseDNsTable.getTableHeader().setVisible(false); replicationBaseDNsTable = Utilities.createSortableTable(dbTableModelWithReplication, renderer); @@ -794,6 +816,13 @@ Utilities.addClickTooltipListener(noReplicatedBaseDNsTable); Utilities.addClickTooltipListener(replicationBaseDNsTable); l.setLabelFor(replicationBaseDNsTable); noReplicatedBaseDNsTable.getAccessibleContext().setAccessibleName( l.getText()); replicationBaseDNsTable.getAccessibleContext().setAccessibleName( l.getText()); gbc.insets.top = 5; p.add(noReplicatedBaseDNsTable.getTableHeader(), gbc); gbc.insets.top = 0; @@ -807,9 +836,10 @@ replicationBaseDNsTable.getTableHeader().setVisible(true); gbc.insets.top = 5; dbTableEmpty = Utilities.createPrimaryLabel( INFO_CTRL_PANEL_NO_DATA_SOURCES_FOUND.get()); dbTableEmpty.setHorizontalAlignment(SwingConstants.CENTER); dbTableEmpty = Utilities.makeHtmlPane( INFO_CTRL_PANEL_NO_DATA_SOURCES_FOUND.get().toString(), ColorAndFontConstants.primaryFont); gbc.fill = GridBagConstraints.NONE; gbc.anchor = GridBagConstraints.CENTER; p.add(dbTableEmpty, gbc); dbTableEmpty.setVisible(false); @@ -869,4 +899,10 @@ } return status.toString(); } private void setTitleBorder(JPanel p, Message title) { p.setBorder(Utilities.makeTitledBorder(title)); p.getAccessibleContext().setAccessibleName(title.toString()); } } opends/src/guitools/org/opends/guitools/controlpanel/ui/components/LabelWithHelpIcon.java
@@ -22,12 +22,13 @@ * CDDL HEADER END * * * Copyright 2008-2009 Sun Microsystems, Inc. * Copyright 2008-2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui.components; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; @@ -97,6 +98,18 @@ add(Box.createHorizontalGlue(), gbc); Utilities.addClickTooltipListener(iconLabel); updateAccessibleContext(); } /** * Set the component this is labeling. Can be {@code null} if this does not * label a {@code Component}. * @param comp the {@code Component} to be labeled. */ public void setLabelFor(Component comp) { label.setLabelFor(comp); } /** @@ -106,6 +119,7 @@ public void setText(String text) { label.setText(text); updateAccessibleContext(); } /** @@ -137,6 +151,7 @@ public void setHelpTooltip(String tooltip) { iconLabel.setToolTipText(tooltip); updateAccessibleContext(); } /** @@ -198,4 +213,24 @@ return null; } } private void updateAccessibleContext() { StringBuilder sb = new StringBuilder(); String s = label.getText(); if (s != null) { sb.append(s); } if (iconLabel.getIcon() != null) { String toolTip = iconLabel.getToolTipText(); toolTip = Utilities.stripHtmlToSingleLine(toolTip); if (toolTip != null) { sb.append(" - "+toolTip); } } getAccessibleContext().setAccessibleName(sb.toString()); } } opends/src/guitools/org/opends/guitools/controlpanel/ui/components/SelectableLabelWithHelpIcon.java
New file @@ -0,0 +1,206 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui.components; import java.awt.Color; import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.MouseEvent; import javax.swing.Box; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.text.JTextComponent; import org.opends.guitools.controlpanel.ui.ColorAndFontConstants; import org.opends.guitools.controlpanel.util.Utilities; import org.opends.messages.Message; /** * A panel containing a label an a help icon. A customized tool tip is used, * the tool tip is also displayed when the user clicks on the help icon. * The main difference with {@code LabelWithHelpIcon} is that this uses * a {@code JEditorPane} as label. * */ public class SelectableLabelWithHelpIcon extends JPanel { private static final long serialVersionUID = 4502977901098910797L; /** * The label with the text. */ private JTextComponent label = Utilities.makeHtmlPane("", ColorAndFontConstants.defaultFont); /** * The label with the icon. */ private JLabel iconLabel = new JLabel(icon); private static final ImageIcon icon = Utilities.createImageIcon("org/opends/quicksetup/images/help_small.gif"); /** * The left inset of the help icon. */ private final int INSET_WITH_ICON= 3; /** * The constructor of this panel. * @param text the text of the panel. * @param tooltipIcon the tool tip of the help icon. */ public SelectableLabelWithHelpIcon(Message text, Message tooltipIcon) { super(new GridBagLayout()); setOpaque(false); label.setText(Utilities.applyFont(text.toString(), label.getFont())); if (tooltipIcon != null) { iconLabel.setToolTipText(tooltipIcon.toString()); } GridBagConstraints gbc = new GridBagConstraints(); gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 1; add(label, gbc); gbc.gridx ++; gbc.insets.left = INSET_WITH_ICON; add(iconLabel, gbc); gbc.insets.left = 0; gbc.weightx = 1.0; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.gridx ++; add(Box.createHorizontalGlue(), gbc); Utilities.addClickTooltipListener(iconLabel); } /** * Sets the text on the label. The text is assumed to be in HTML format * but the font will be imposed by the font specified using {@link #setFont}. * @param text the text to be displayed. */ public void setText(String text) { label.setText(Utilities.applyFont(text.toString(), label.getFont())); } /** * Returns the text displayed on the panel. * @return the text displayed on the panel. */ public String getText() { return label.getText(); } /** * Sets the font to be used in this panel. * @param font the font. */ public void setFont(Font font) { // This is called by the constructor of JPanel. if (label != null) { label.setFont(font); } } /** * Sets the tool tip to be used in the help icon. * @param tooltip the tool tip text. */ public void setHelpTooltip(String tooltip) { iconLabel.setToolTipText(tooltip); } /** * Returns the tool tip to be used in the help icon. * @return the tool tip to be used in the help icon. */ public String getHelpTooltip() { return iconLabel.getToolTipText(); } /** * Sets whether the help icon is visible or not. * @param visible whether the help icon is visible or not. */ public void setHelpIconVisible(boolean visible) { if (visible) { if (iconLabel.getIcon() != icon) { iconLabel.setIcon(icon); } } else if (iconLabel.getIcon() != null) { iconLabel.setIcon(null); } } /** * Sets the foreground color for the text in this panel. * @param color the foreground color for the text in this panel. */ public void setForeground(Color color) { super.setForeground(color); if (label != null) { // This is called in the constructor of the object. label.setForeground(color); } } /** * {@inheritDoc} */ public String getToolTipText(MouseEvent ev) { int x = ev.getPoint().x; boolean display = x > label.getPreferredSize().width - 10; if (display) { return getHelpTooltip(); } else { return null; } } } opends/src/guitools/org/opends/guitools/controlpanel/ui/renderer/AccessibleTableHeaderRenderer.java
New file @@ -0,0 +1,63 @@ /* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2010 Sun Microsystems, Inc. */ package org.opends.guitools.controlpanel.ui.renderer; import java.awt.Component; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import org.opends.guitools.controlpanel.util.Utilities; /** * Class used to have components that provide a valid accessible name. */ public class AccessibleTableHeaderRenderer implements TableCellRenderer { private TableCellRenderer renderer; /** * Constructor of the renderer. * @param renderer the renderer to be used as base. */ public AccessibleTableHeaderRenderer(TableCellRenderer renderer) { this.renderer = renderer; } /** * {@inheritDoc} */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { Component comp = renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); comp.getAccessibleContext().setAccessibleName( Utilities.stripHtmlToSingleLine(String.valueOf(value))); return comp; } } opends/src/guitools/org/opends/guitools/controlpanel/util/Utilities.java
@@ -101,6 +101,10 @@ import org.opends.guitools.controlpanel.event.TextComponentFocusListener; import org.opends.guitools.controlpanel.ui.ColorAndFontConstants; import org.opends.guitools.controlpanel.ui.components.LabelWithHelpIcon; import org.opends.guitools.controlpanel.ui.components. SelectableLabelWithHelpIcon; import org.opends.guitools.controlpanel.ui.renderer. AccessibleTableHeaderRenderer; import org.opends.messages.Message; import org.opends.quicksetup.ui.UIFactory; import org.opends.quicksetup.util.Utils; @@ -338,6 +342,7 @@ { JEditorPane pane = new JEditorPane(); pane.setContentType("text/html"); pane.setFont(font); if (text != null) { pane.setText(applyFont(text, font)); @@ -350,6 +355,28 @@ } /** * Creates a JEditorPane that displays a message. * @param text the message of the editor pane in plain text format. * @param font the font to be used in the message. * @return a JEditorPane that displays a message. */ public static JEditorPane makePlainTextPane(String text, Font font) { JEditorPane pane = new JEditorPane(); pane.setContentType("text/plain"); if (text != null) { pane.setText(text); } pane.setFont(font); pane.setEditable(false); pane.setBorder(new EmptyBorder(0, 0, 0, 0)); pane.setOpaque(false); pane.setFocusCycleRoot(false); return pane; } /** * Returns the HTML style representation for the given font. * @param font the font for which we want to get an HTML style representation. * @return the HTML style representation for the given font. @@ -434,6 +461,7 @@ JButton button = new JButton(text.toString()); button.setOpaque(false); button.setForeground(ColorAndFontConstants.buttonForeground); button.getAccessibleContext().setAccessibleName(text.toString()); return button; } @@ -447,6 +475,7 @@ JRadioButton button = new JRadioButton(text.toString()); button.setOpaque(false); button.setForeground(ColorAndFontConstants.buttonForeground); button.getAccessibleContext().setAccessibleName(text.toString()); return button; } @@ -460,6 +489,7 @@ JCheckBox cb = new JCheckBox(text.toString()); cb.setOpaque(false); cb.setForeground(ColorAndFontConstants.buttonForeground); cb.getAccessibleContext().setAccessibleName(text.toString()); return cb; } @@ -585,6 +615,9 @@ BorderFactory.createMatteBorder(1, 1, 0, 1, ColorAndFontConstants.gridColor)); } table.getTableHeader().setDefaultRenderer( new AccessibleTableHeaderRenderer( table.getTableHeader().getDefaultRenderer())); for (int i=0; i<tableModel.getColumnCount(); i++) { @@ -1018,6 +1051,28 @@ } } /** * Strips any potential HTML markup from a given string. * @param s string to strip * @return resulting string */ static public String stripHtmlToSingleLine(String s) { String o = null; if (s != null) { s = s.replaceAll("<br>", " "); // This is not a comprehensive solution but addresses // the few tags that we have in Resources.properties // at the moment. Note that the following might strip // out more than is intended for non-tags like // '<your name here>' or for funky tags like // '<tag attr="1 > 0">'. See test class for cases that // might cause problems. o = s.replaceAll("\\<.*?\\>",""); } return o; } private final static String HTML_SPACE = " "; /** * Wraps the contents of the provided message using the specified number of @@ -1715,6 +1770,36 @@ } /** * Sets the not available text to a label and associates a help icon and * a tooltip explaining that the data is not available because the server is * down. * @param l the label. */ public static void setNotAvailableBecauseServerIsDown( SelectableLabelWithHelpIcon l) { l.setText(INFO_CTRL_PANEL_NOT_AVAILABLE_LONG_LABEL.get().toString()); l.setHelpIconVisible(true); l.setHelpTooltip(INFO_NOT_AVAILABLE_SERVER_DOWN_TOOLTIP.get().toString()); } /** * Sets the not available text to a label and associates a help icon and * a tooltip explaining that the data is not available because authentication * is required. * @param l the label. */ public static void setNotAvailableBecauseAuthenticationIsRequired( SelectableLabelWithHelpIcon l) { l.setText(INFO_CTRL_PANEL_NOT_AVAILABLE_LONG_LABEL.get().toString()); l.setHelpIconVisible(true); l.setHelpTooltip( INFO_NOT_AVAILABLE_AUTHENTICATION_REQUIRED_TOOLTIP.get() .toString()); } /** * Updates a label by setting a warning icon and a text. * @param l the label to be updated. * @param text the text to be set on the label. @@ -1726,6 +1811,10 @@ { warningIcon = createImageIcon("org/opends/quicksetup/images/warning_medium.gif"); warningIcon.setDescription( INFO_WARNING_ICON_ACCESSIBLE_DESCRIPTION.get().toString()); warningIcon.getAccessibleContext().setAccessibleName( INFO_WARNING_ICON_ACCESSIBLE_DESCRIPTION.get().toString()); } l.setIcon(warningIcon); l.setToolTipText(text.toString()); @@ -1756,6 +1845,29 @@ } /** * Sets the not available text to a label with no icon nor tooltip. * @param l the label. */ public static void setNotAvailable(SelectableLabelWithHelpIcon l) { l.setText(INFO_CTRL_PANEL_NOT_AVAILABLE_LONG_LABEL.get().toString()); l.setHelpIconVisible(false); l.setHelpTooltip(null); } /** * Sets the a text to a label with no icon nor tooltip. * @param l the label. * @param text the text. */ public static void setTextValue(SelectableLabelWithHelpIcon l, String text) { l.setText(text); l.setHelpIconVisible(false); l.setHelpTooltip(null); } /** * Returns the server root directory (the path where the server is installed). * @return the server root directory (the path where the server is installed). */ @@ -2396,6 +2508,10 @@ { requiredIcon = createImageIcon(IconPool.IMAGE_PATH+"/required.gif"); requiredIcon.setDescription( INFO_REQUIRED_ICON_ACCESSIBLE_DESCRIPTION.get().toString()); requiredIcon.getAccessibleContext().setAccessibleName( INFO_REQUIRED_ICON_ACCESSIBLE_DESCRIPTION.get().toString()); } label.setIcon(requiredIcon); label.setHorizontalTextPosition(SwingConstants.LEADING); opends/src/messages/messages/admin_tool.properties
@@ -2056,6 +2056,8 @@ INFO_CTRL_PANEL_LOCAL_OR_REMOTE_LABEL=Choose the server to be administered: INFO_CTRL_PANEL_REMOTE_SERVER=Remote Server: INFO_CTRL_PANEL_REMOTE_SERVER_TOOLTIP=Fully qualified host name of the remote \ server. INFO_CTRL_PANEL_LOCAL_SERVER=Local Server INFO_CTRL_PANEL_ADMINISTRATION_PORT=Administration Port: INFO_CTRL_PANEL_LOCAL_SERVER_NOT_RUNNING=Not Running @@ -2970,3 +2972,6 @@ INFO_CTRL_PANEL_ENTRY_TO_DUPLICATE_HAS_PASSWORD_WARNING=The duplicated entry \ will contain a password with value '%s' INFO_CTRL_PANEL_DS_SYNC_HIST_BINARY_VALUE=<Binary Value> INFO_REQUIRED_ICON_ACCESSIBLE_DESCRIPTION=Required Icon. INFO_WARNING_ICON_ACCESSIBLE_DESCRIPTION=Warning Icon. INFO_ACCESSIBLE_TABLE_CELL_NAME=%s - Column %s opends/src/quicksetup/org/opends/quicksetup/ui/UIFactory.java
@@ -28,7 +28,6 @@ package org.opends.quicksetup.ui; import org.opends.messages.Message; import org.opends.quicksetup.util.Utils; import static org.opends.messages.QuickSetupMessages.*; @@ -554,26 +553,6 @@ private static final HashMap<IconType, ImageIcon> hmIcons = new HashMap<IconType, ImageIcon>(); static { if (!Utils.isCli()) { try { UIManager.put("OptionPane.background", getColor(INFO_OPTIONPANE_BACKGROUND_COLOR.get())); UIManager.put("Panel.background", getColor(INFO_PANEL_BACKGROUND_COLOR.get())); UIManager.put("ComboBox.background", getColor(INFO_COMBOBOX_BACKGROUND_COLOR.get())); } catch (Throwable t) { // This might occur when we do not get the display LOG.log(Level.WARNING, "Error updating UIManager: "+t, t); } } } /** * The following enumeration contains the different icons that we can have. * @@ -731,54 +710,78 @@ } /** * This method initialize the look and feel and UI settings. * This method initialize the look and feel. * @throws Throwable if there is a problem initializing the look and feel. */ public static void initializeLookAndFeel() throws Throwable { final Throwable[] ts = {null}; Runnable r = new Runnable() { public void run() { System.setProperty("swing.aatext", "true"); try { String lf = UIManager.getSystemLookAndFeelClassName(); if (lf.equalsIgnoreCase( "com.sun.java.swing.plaf.motif.MotifLookAndFeel")) { lf = UIManager.getCrossPlatformLookAndFeelClassName(); } UIManager.setLookAndFeel(lf); } catch (Throwable t) { ts[0] = t; } JFrame.setDefaultLookAndFeelDecorated(false); } }; if (SwingUtilities.isEventDispatchThread()) { r.run(); } else { try { SwingUtilities.invokeAndWait(r); } catch (Throwable t) { ts[0] = t; } } if (ts[0] != null) { throw ts[0]; } } /** * This method initialize the look and feel and UI settings specific to * quick setup. * @throws Throwable if there is a problem initializing the look and feel. */ public static void initialize() throws Throwable { if (!initialized) { final Throwable[] ts = {null}; Runnable r = new Runnable() try { public void run() { System.setProperty("swing.aatext", "true"); try { String lf = UIManager.getSystemLookAndFeelClassName(); if (lf.equalsIgnoreCase( "com.sun.java.swing.plaf.motif.MotifLookAndFeel")) { lf = UIManager.getCrossPlatformLookAndFeelClassName(); } UIManager.setLookAndFeel(lf); } catch (Throwable t) { ts[0] = t; } JFrame.setDefaultLookAndFeelDecorated(false); } }; if (SwingUtilities.isEventDispatchThread()) { r.run(); UIManager.put("OptionPane.background", getColor(INFO_OPTIONPANE_BACKGROUND_COLOR.get())); UIManager.put("Panel.background", getColor(INFO_PANEL_BACKGROUND_COLOR.get())); UIManager.put("ComboBox.background", getColor(INFO_COMBOBOX_BACKGROUND_COLOR.get())); } else catch (Throwable t) { try { SwingUtilities.invokeAndWait(r); } catch (Throwable t) { ts[0] = t; } // This might occur when we do not get the display LOG.log(Level.WARNING, "Error updating UIManager: "+t, t); } if (ts[0] != null) { throw ts[0]; } initializeLookAndFeel(); initialized = true; } }