Changeset 3052


Ignore:
Timestamp:
01/18/12 17:52:40 (4 months ago)
Author:
kasper
Message:

Improved display of filter outcomes. Incremented version to 2.4.2.

Location:
DataCleaner/trunk/core/src/main
Files:
2 added
9 edited
2 moved

Legend:

Unmodified
Added
Removed
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/Main.java

    r2999 r3052  
    3838public final class Main { 
    3939 
    40         public static final String VERSION = "2.4.1"; 
     40        public static final String VERSION = "2.4.2"; 
    4141 
    4242        public static void main(String[] args) { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/actions/DisplayOptionsForFilterOutcomeActionListener.java

    r2632 r3052  
    2020package org.eobjects.datacleaner.actions; 
    2121 
     22import java.awt.event.ActionEvent; 
     23import java.awt.event.ActionListener; 
     24import java.util.List; 
     25 
     26import javax.swing.JComponent; 
     27import javax.swing.JMenuItem; 
     28import javax.swing.JPopupMenu; 
     29 
    2230import org.eobjects.analyzer.beans.api.Analyzer; 
    23 import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
     31import org.eobjects.analyzer.beans.writers.WriteDataCategory; 
     32import org.eobjects.analyzer.job.FilterOutcome; 
     33import org.eobjects.analyzer.job.Outcome; 
    2434import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
    2535import org.eobjects.analyzer.job.builder.AnalyzerJobBuilder; 
    2636import org.eobjects.analyzer.job.builder.FilterJobBuilder; 
    2737import org.eobjects.datacleaner.output.beans.AbstractOutputWriterAnalyzer; 
     38import org.eobjects.datacleaner.util.IconUtils; 
     39import org.eobjects.datacleaner.util.ImageManager; 
     40import org.eobjects.datacleaner.widgets.DescriptorMenu; 
    2841 
    2942/** 
     
    3245 * @author Kasper SÞrensen 
    3346 */ 
    34 public class DisplayOutputWritersForFilterOutcomeActionListener extends AbstractDisplayOutputWritersActionListener { 
     47public class DisplayOptionsForFilterOutcomeActionListener extends DisplayOutputWritersAction implements ActionListener { 
     48 
     49        private static final ImageManager imageManager = ImageManager.getInstance(); 
    3550 
    3651        private final FilterJobBuilder<?, ?> _filterJobBuilder; 
    3752        private final String _categoryName; 
    3853 
    39         public DisplayOutputWritersForFilterOutcomeActionListener(AnalyzerBeansConfiguration configuration, 
    40                         AnalysisJobBuilder analysisJobBuilder, FilterJobBuilder<?, ?> filterJobBuilder, String categoryName) { 
    41                 super(configuration, analysisJobBuilder); 
     54        public DisplayOptionsForFilterOutcomeActionListener(FilterJobBuilder<?, ?> filterJobBuilder, String categoryName) { 
     55                super(filterJobBuilder.getAnalysisJobBuilder()); 
    4256                _filterJobBuilder = filterJobBuilder; 
    4357                _categoryName = categoryName; 
     58        } 
     59 
     60        @Override 
     61        public void actionPerformed(ActionEvent e) { 
     62                final FilterOutcome requirement = _filterJobBuilder.getOutcome(_filterJobBuilder.getDescriptor() 
     63                                .getOutcomeCategoryByName(_categoryName)); 
     64 
     65                final DescriptorMenu writeDataMenu = new DescriptorMenu(new WriteDataCategory()); 
     66                { 
     67                        List<JMenuItem> writerDataMenuItems = createMenuItems(); 
     68                        for (JMenuItem menuItem : writerDataMenuItems) { 
     69                                writeDataMenu.add(menuItem); 
     70                        } 
     71                } 
     72 
     73                final AnalysisJobBuilder analysisJobBuilder = _filterJobBuilder.getAnalysisJobBuilder(); 
     74 
     75                // TODO: Add more items: "Dependent components" (click through), 
     76                // "Add analyzer", "Add transformer" 
     77 
     78                final JMenuItem setAsDefaultOutcomeMenuItem = new JMenuItem("Set as default requirement"); 
     79                setAsDefaultOutcomeMenuItem 
     80                                .setToolTipText("Makes this filter outcome the default choice for other components in the job."); 
     81 
     82                Outcome existingDefaultRequirement = analysisJobBuilder.getDefaultRequirement(); 
     83                if (requirement.equals(existingDefaultRequirement)) { 
     84                        setAsDefaultOutcomeMenuItem 
     85                                        .setIcon(imageManager.getImageIcon(IconUtils.STATUS_VALID, IconUtils.ICON_SIZE_SMALL)); 
     86                } 
     87 
     88                setAsDefaultOutcomeMenuItem.addActionListener(new ActionListener() { 
     89                        @Override 
     90                        public void actionPerformed(ActionEvent e) { 
     91                                Enum<?> category = _filterJobBuilder.getDescriptor().getOutcomeCategoryByName(_categoryName); 
     92                                FilterOutcome outcome = _filterJobBuilder.getOutcome(category); 
     93                                analysisJobBuilder.setDefaultRequirement(outcome); 
     94                        } 
     95                }); 
     96 
     97                final JPopupMenu popup = new JPopupMenu(); 
     98                popup.add(writeDataMenu); 
     99                popup.add(setAsDefaultOutcomeMenuItem); 
     100 
     101                final JComponent component = (JComponent) e.getSource(); 
     102                popup.show(component, 0, component.getHeight()); 
    44103        } 
    45104 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/actions/DisplayOutputWritersAction.java

    r2963 r3052  
    3535import org.eobjects.analyzer.beans.api.ComponentCategory; 
    3636import org.eobjects.analyzer.beans.writers.WriteDataCategory; 
    37 import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    3837import org.eobjects.analyzer.descriptors.AnalyzerBeanDescriptor; 
    3938import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
     
    4342import org.eobjects.datacleaner.widgets.DescriptorMenuItem; 
    4443 
    45 public class AbstractDisplayOutputWritersActionListener implements ActionListener { 
     44public class DisplayOutputWritersAction { 
    4645 
    4746        private final AnalysisJobBuilder _analysisJobBuilder; 
    48         private final AnalyzerBeansConfiguration _configuration; 
    4947 
    50         public AbstractDisplayOutputWritersActionListener(AnalyzerBeansConfiguration configuration, 
    51                         AnalysisJobBuilder analysisJobBuilder) { 
    52                 _configuration = configuration; 
     48        public DisplayOutputWritersAction(AnalysisJobBuilder analysisJobBuilder) { 
    5349                _analysisJobBuilder = analysisJobBuilder; 
    5450        } 
    5551 
    56         @Override 
    57         public final void actionPerformed(ActionEvent e) { 
     52        public final void showPopup(JComponent component) { 
    5853                JPopupMenu popup = new JPopupMenu(); 
    5954 
     
    6358                } 
    6459 
    65                 JComponent component = (JComponent) e.getSource(); 
    6660                popup.show(component, 0, component.getHeight()); 
    6761        } 
     
    9286 
    9387        protected List<AnalyzerBeanDescriptor<?>> getDescriptors() { 
    94                 Collection<AnalyzerBeanDescriptor<?>> descriptors = _configuration.getDescriptorProvider() 
     88                Collection<AnalyzerBeanDescriptor<?>> descriptors = _analysisJobBuilder.getConfiguration().getDescriptorProvider() 
    9589                                .getAnalyzerBeanDescriptors(); 
    9690                List<AnalyzerBeanDescriptor<?>> result = CollectionUtils2.sorted(descriptors, new DisplayNameComparator()); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/actions/DisplayOutputWritersForTransformedDataActionListener.java

    r2632 r3052  
    2020package org.eobjects.datacleaner.actions; 
    2121 
     22import java.awt.event.ActionEvent; 
     23import java.awt.event.ActionListener; 
    2224import java.util.List; 
     25 
     26import javax.swing.JComponent; 
    2327 
    2428import org.eobjects.analyzer.beans.api.Analyzer; 
     
    3539 * @author Kasper SÞrensen 
    3640 */ 
    37 public class DisplayOutputWritersForTransformedDataActionListener extends AbstractDisplayOutputWritersActionListener { 
     41public class DisplayOutputWritersForTransformedDataActionListener extends DisplayOutputWritersAction implements 
     42                ActionListener { 
    3843 
    3944        private final TransformerJobBuilder<?> _transformerJobBuilder; 
    4045 
    4146        public DisplayOutputWritersForTransformedDataActionListener(TransformerJobBuilder<?> transformerJobBuilder) { 
    42                 super(transformerJobBuilder.getAnalysisJobBuilder().getConfiguration(), transformerJobBuilder 
    43                                 .getAnalysisJobBuilder()); 
     47                super(transformerJobBuilder.getAnalysisJobBuilder()); 
    4448                _transformerJobBuilder = transformerJobBuilder; 
    4549        } 
     
    5963        } 
    6064 
     65        @Override 
     66        public void actionPerformed(ActionEvent e) { 
     67                JComponent component = (JComponent) e.getSource(); 
     68                showPopup(component); 
     69        } 
     70 
    6171} 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/FilterJobBuilderPanel.java

    r2600 r3052  
    2323import java.awt.event.ActionEvent; 
    2424import java.awt.event.ActionListener; 
     25import java.io.File; 
    2526import java.util.Set; 
    2627 
    2728import javax.swing.JButton; 
    2829import javax.swing.JComponent; 
     30import javax.swing.JFrame; 
     31import javax.swing.JLabel; 
     32import javax.swing.JOptionPane; 
    2933import javax.swing.border.TitledBorder; 
    3034 
     35import org.eobjects.analyzer.beans.filter.NotNullFilter; 
     36import org.eobjects.analyzer.beans.filter.ValidationCategory; 
    3137import org.eobjects.analyzer.descriptors.ConfiguredPropertyDescriptor; 
    3238import org.eobjects.analyzer.descriptors.FilterBeanDescriptor; 
     
    3440import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
    3541import org.eobjects.analyzer.job.builder.FilterJobBuilder; 
    36 import org.eobjects.datacleaner.actions.DisplayOutputWritersForFilterOutcomeActionListener; 
     42import org.eobjects.datacleaner.actions.DisplayOptionsForFilterOutcomeActionListener; 
     43import org.eobjects.datacleaner.guice.DCModule; 
     44import org.eobjects.datacleaner.guice.InjectorBuilder; 
    3745import org.eobjects.datacleaner.util.IconUtils; 
    3846import org.eobjects.datacleaner.util.ImageManager; 
     47import org.eobjects.datacleaner.util.LookAndFeelManager; 
     48import org.eobjects.datacleaner.util.WidgetFactory; 
    3949import org.eobjects.datacleaner.widgets.Alignment; 
    4050import org.eobjects.datacleaner.widgets.ChangeRequirementButton; 
     51import org.eobjects.datacleaner.widgets.DCLabel; 
    4152import org.eobjects.datacleaner.widgets.properties.PropertyWidget; 
    4253import org.eobjects.datacleaner.widgets.properties.PropertyWidgetFactory; 
    4354import org.eobjects.datacleaner.widgets.properties.PropertyWidgetPanel; 
     55 
     56import com.google.inject.Guice; 
     57import com.google.inject.Injector; 
    4458 
    4559public class FilterJobBuilderPanel extends DCPanel implements FilterJobBuilderPresenter { 
     
    8498 
    8599                final DCPanel outcomePanel = new DCPanel(); 
    86                 outcomePanel.setBorder(new TitledBorder("Outcomes")); 
     100                outcomePanel.setBorder(new TitledBorder("This filter categorizes records as:")); 
    87101 
    88102                final Set<String> categoryNames = _descriptor.getOutcomeCategoryNames(); 
     
    90104                        final JButton outcomeButton = new JButton(categoryName, imageManager.getImageIcon( 
    91105                                        "images/component-types/filter-outcome.png", IconUtils.ICON_SIZE_SMALL)); 
    92                         AnalysisJobBuilder analysisJobBuilder = _filterJobBuilder.getAnalysisJobBuilder(); 
    93                         outcomeButton.addActionListener(new DisplayOutputWritersForFilterOutcomeActionListener(_filterJobBuilder 
    94                                         .getAnalysisJobBuilder().getConfiguration(), analysisJobBuilder, _filterJobBuilder, categoryName)); 
     106 
     107                        outcomeButton 
     108                                        .addActionListener(new DisplayOptionsForFilterOutcomeActionListener(_filterJobBuilder, categoryName)); 
    95109                        outcomePanel.add(outcomeButton); 
    96110                } 
     111 
     112                final JButton helpButton = WidgetFactory.createSmallButton("images/widgets/help.png"); 
     113                helpButton.addActionListener(new ActionListener() { 
     114                        @Override 
     115                        public void actionPerformed(ActionEvent e) { 
     116                                DCPanel messagePanel = new DCPanel(); 
     117                                messagePanel.setLayout(new BorderLayout()); 
     118                                messagePanel.add(new JLabel(imageManager.getImageIcon("images/help/help_requirement_mapping.png")), 
     119                                                BorderLayout.WEST); 
     120                                messagePanel.add(DCLabel 
     121                                                .darkMultiLine("Filter outcomes can be set as requirements<br>" 
     122                                                                + "for other components, using the<br>" + "\"(no requirement specified)\" buttons.<br><br>" 
     123                                                                + "You can also click the categories directly to eg.<br>" 
     124                                                                + "write categorized records or to map them<br>" 
     125                                                                + "as requirements for existing or new components.")); 
     126                                JOptionPane.showMessageDialog(FilterJobBuilderPanel.this, messagePanel, 
     127                                                "Help: Filter categories / outcomes", JOptionPane.PLAIN_MESSAGE); 
     128                        } 
     129                }); 
     130                outcomePanel.add(helpButton); 
    97131 
    98132                final DCPanel buttonPanel = DCPanel.flow(Alignment.RIGHT, removeButton, _requirementButton); 
     
    101135                add(buttonPanel, BorderLayout.NORTH); 
    102136                add(panel, BorderLayout.CENTER); 
    103                 add(DCPanel.flow(Alignment.CENTER, outcomePanel), BorderLayout.SOUTH); 
     137                add(outcomePanel, BorderLayout.SOUTH); 
    104138        } 
    105139 
     
    143177                getPropertyWidgetFactory().onConfigurationChanged(); 
    144178        } 
     179 
     180        /** 
     181         * Constructor used only for UI testing and improvement purposes 
     182         *  
     183         * @param args 
     184         */ 
     185        public static void main(String[] args) { 
     186                LookAndFeelManager.getInstance().init(); 
     187 
     188                DCModule module = new DCModule(new File(".")); 
     189                Injector injector = Guice.createInjector(module); 
     190 
     191                AnalysisJobBuilder ajb = injector.getInstance(AnalysisJobBuilder.class); 
     192 
     193                ajb.setDatastore("orderdb"); 
     194                ajb.addSourceColumns("PUBLIC.EMPLOYEES.EMPLOYEENUMBER"); 
     195                ajb.addSourceColumns("PUBLIC.EMPLOYEES.EMAIL"); 
     196 
     197                FilterJobBuilder<NotNullFilter, ValidationCategory> fjb = ajb.addFilter(NotNullFilter.class); 
     198                InjectorBuilder injectorBuilder = injector.getInstance(InjectorBuilder.class); 
     199                PropertyWidgetFactory propertyWidgetFactory = injectorBuilder.with( 
     200                                PropertyWidgetFactory.TYPELITERAL_BEAN_JOB_BUILDER, fjb).getInstance(PropertyWidgetFactory.class); 
     201 
     202                FilterJobBuilderPanel panel = new FilterJobBuilderPanel(fjb, propertyWidgetFactory); 
     203                JFrame frame = new JFrame("test"); 
     204                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     205                frame.getContentPane().add(panel); 
     206                frame.pack(); 
     207                frame.setVisible(true); 
     208        } 
    145209} 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/panels/TransformerJobBuilderPanel.java

    r2847 r3052  
    5353        private final ChangeRequirementButton _requirementButton; 
    5454        private final JButton _previewButton; 
    55         private final JButton _writeOutputButton; 
     55        private final JButton _writeDataButton; 
    5656        private final WindowContext _windowContext; 
    5757 
     
    7777                _outputColumnsTable = new ColumnListTable(outputColumns, getAnalysisJobBuilder(), false, _windowContext); 
    7878 
    79                 _writeOutputButton = new JButton("Write data", 
     79                _writeDataButton = new JButton("Write data", 
    8080                                imageManager.getImageIcon("images/component-types/type_output_writer.png")); 
    81                 _writeOutputButton 
     81                _writeDataButton 
    8282                                .addActionListener(new DisplayOutputWritersForTransformedDataActionListener(_transformerJobBuilder)); 
    8383 
     
    9090                final DCPanel bottomButtonPanel = new DCPanel(); 
    9191                bottomButtonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT, 4, 0)); 
    92                 bottomButtonPanel.add(_writeOutputButton); 
     92                bottomButtonPanel.add(_writeDataButton); 
    9393                bottomButtonPanel.add(_previewButton); 
    9494                _outputColumnsTable.add(bottomButtonPanel, BorderLayout.SOUTH); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/DCWindowMenuBar.java

    r2963 r3052  
    3333import javax.swing.JMenuItem; 
    3434 
    35 import org.eobjects.analyzer.configuration.AnalyzerBeansConfiguration; 
    3635import org.eobjects.analyzer.job.builder.AnalysisJobBuilder; 
    37 import org.eobjects.datacleaner.actions.AbstractDisplayOutputWritersActionListener; 
     36import org.eobjects.datacleaner.actions.DisplayOutputWritersAction; 
    3837import org.eobjects.datacleaner.actions.NewAnalysisJobActionListener; 
    3938import org.eobjects.datacleaner.actions.OpenAnalysisJobActionListener; 
     
    6261        private final Provider<OptionsDialog> _optionsDialogProvider; 
    6362        private final JMenu _writeDataMenu; 
    64         private final Provider<AnalyzerBeansConfiguration> _configurationProvider; 
    6563 
    6664        @Inject 
     
    6866                        final Provider<ReferenceDataDialog> referenceDataDialogProvider, 
    6967                        NewAnalysisJobActionListener newAnalysisJobActionListener, 
    70                         Provider<AnalyzerBeansConfiguration> configurationProvider, 
    7168                        OpenAnalysisJobActionListener openAnalysisJobActionListener, Provider<OptionsDialog> optionsDialogProvider) { 
    7269                super(); 
    7370                _windowContext = windowContext; 
    74                 _configurationProvider = configurationProvider; 
    7571                _referenceDataDialogProvider = referenceDataDialogProvider; 
    7672                _optionsDialogProvider = optionsDialogProvider; 
     
    218214 
    219215        public void setAnalysisJobBuilder(AnalysisJobBuilder analysisJobBuilder) { 
    220                 List<JMenuItem> menuItems = new AbstractDisplayOutputWritersActionListener(_configurationProvider.get(), 
    221                                 analysisJobBuilder).createMenuItems(); 
     216                List<JMenuItem> menuItems = new DisplayOutputWritersAction(analysisJobBuilder).createMenuItems(); 
    222217                _writeDataMenu.removeAll(); 
    223218                for (JMenuItem menuItem : menuItems) { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/DescriptorPopupMenu.java

    r2760 r3052  
    5050 
    5151        private static final Logger logger = LoggerFactory.getLogger(DescriptorPopupMenu.class); 
     52         
    5253        private final List<? extends E> _descriptors; 
    5354 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/HelpIcon.java

    r1577 r3052  
    2222import java.awt.BorderLayout; 
    2323 
     24import javax.swing.Icon; 
    2425import javax.swing.JLabel; 
    2526import javax.swing.JToolTip; 
     
    4041        private static final ImageManager imageManager = ImageManager.getInstance(); 
    4142        private final String _helpMessage; 
     43        private final Icon _tooltipIcon; 
     44 
     45        public HelpIcon(String helpMessage, Icon tooltipIcon) { 
     46                super(imageManager.getImageIcon("images/widgets/help.png", IconUtils.ICON_SIZE_SMALL)); 
     47                _tooltipIcon = tooltipIcon; 
     48                _helpMessage = helpMessage; 
     49                ToolTipManager.sharedInstance().registerComponent(this); 
     50        } 
    4251 
    4352        public HelpIcon(String helpMessage) { 
    44                 super(imageManager.getImageIcon("images/widgets/help.png", IconUtils.ICON_SIZE_SMALL)); 
    45                 _helpMessage = helpMessage; 
    46                 ToolTipManager.sharedInstance().registerComponent(this); 
     53                this(helpMessage, imageManager.getImageIcon("images/widgets/help.png")); 
    4754        } 
    4855 
     
    5966 
    6067                panel.setLayout(new BorderLayout()); 
    61                 panel.add(new JLabel(imageManager.getImageIcon("images/widgets/help.png")), BorderLayout.WEST); 
     68                panel.add(new JLabel(_tooltipIcon), BorderLayout.WEST); 
    6269 
    6370                DCLabel descriptionLabel = DCLabel.brightMultiLine(_helpMessage); 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/AbstractPropertyWidget.java

    r2854 r3052  
    2525 
    2626import javax.swing.JComponent; 
     27import javax.swing.border.Border; 
    2728 
    2829import org.eobjects.analyzer.descriptors.ConfiguredPropertyDescriptor; 
     
    134135        } 
    135136 
     137        protected void setBorder(Border border) { 
     138                _panel.setBorder(border); 
     139        } 
     140 
    136141        @Override 
    137142        public final JComponent getWidget() { 
  • DataCleaner/trunk/core/src/main/java/org/eobjects/datacleaner/widgets/properties/MultipleInputColumnsPropertyWidget.java

    r2942 r3052  
    3636import javax.swing.JCheckBox; 
    3737import javax.swing.JComponent; 
     38import javax.swing.border.CompoundBorder; 
     39import javax.swing.border.EmptyBorder; 
     40import javax.swing.border.EtchedBorder; 
     41import javax.swing.border.MatteBorder; 
    3842import javax.swing.event.DocumentEvent; 
    3943 
     
    7276                SourceColumnChangeListener, TransformerChangeListener { 
    7377 
     78        // border for the button panel and search box to make them "indented" 
     79        // similar to the check boxes. 
     80        private static final EmptyBorder _indentBorder = new MatteBorder(1, 17, 0, 1, WidgetUtils.BG_COLOR_BRIGHT); 
     81 
    7482        private final Listener<InputColumn<?>> checkBoxListener = new Listener<InputColumn<?>>() { 
    7583                @Override 
     
    106114                        ConfiguredPropertyDescriptor propertyDescriptor) { 
    107115                super(beanJobBuilder, propertyDescriptor); 
     116                setBorder(new EtchedBorder(EtchedBorder.LOWERED)); 
    108117                _checkBoxes = new LinkedHashMap<InputColumn<?>, DCCheckBox<InputColumn<?>>>(); 
    109118                _checkBoxDecorations = new IdentityHashMap<DCCheckBox<InputColumn<?>>, JComponent>(); 
     
    115124 
    116125                _searchDatastoreTextField = WidgetFactory.createTextField("Search/filter columns"); 
    117                 _searchDatastoreTextField.setBorder(WidgetUtils.BORDER_THIN); 
     126                _searchDatastoreTextField.setBorder(new CompoundBorder(_indentBorder, WidgetUtils.BORDER_THIN)); 
    118127                _searchDatastoreTextField.getDocument().addDocumentListener(new DCDocumentListener() { 
    119128                        @Override 
     
    141150                _buttonPanel = new DCPanel(); 
    142151                _buttonPanel.setLayout(new HorizontalLayout(2)); 
     152                _buttonPanel.setBorder(_indentBorder); 
    143153 
    144154                JButton selectAllButton = new JButton("Select all"); 
     155                selectAllButton.setFont(WidgetUtils.FONT_SMALL); 
    145156                selectAllButton.addActionListener(selectAllActionListener); 
    146157                _buttonPanel.add(selectAllButton); 
    147158 
    148159                JButton selectNoneButton = new JButton("Select none"); 
     160                selectNoneButton.setFont(WidgetUtils.FONT_SMALL); 
    149161                selectNoneButton.addActionListener(selectNoneActionListener); 
    150162                _buttonPanel.add(selectNoneButton); 
Note: See TracChangeset for help on using the changeset viewer.