private DCPanel createNewStringPatternsPanel() { final JButton simpleStringPatternButton = createButton( IconUtils.STRING_PATTERN_SIMPLE_IMAGEPATH, "<html><b>Simple string pattern</b><br/>A string pattern based on simple string tokens, eg. 'Aaaaa 999'.</html>"); simpleStringPatternButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new SimpleStringPatternDialog(_catalog, _windowContext).setVisible(true); } }); final JButton regexStringPatternButton = createButton( IconUtils.STRING_PATTERN_REGEX_IMAGEPATH, "<html><b>Regular expression string pattern</b><br/>A very flexible string pattern, based on regular expressions.</html>"); regexStringPatternButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new RegexStringPatternDialog(_catalog, _windowContext).setVisible(true); } }); final JButton regexSwapStringPatternButton = createButton( IconUtils.STRING_PATTERN_REGEXSWAP_IMAGEPATH, "<html><b>Browse the RegexSwap</b><br/>Download patterns from DataCleaner's online RegexSwap.</html>"); regexSwapStringPatternButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new RegexSwapDialog(_catalog, _windowContext, _userPreferences).setVisible(true); } }); final HelpIcon helpIcon = new HelpIcon( "<b>String patterns</b><br>" + "String pattern provides a way to match string values against patterns. This is often useful for validation or categorization of values in semi- or unstructured columns."); final DCPanel panel = DCPanel.flow( simpleStringPatternButton, regexStringPatternButton, regexSwapStringPatternButton, Box.createHorizontalStrut(100), helpIcon); panel.setBorder(WidgetUtils.BORDER_LIST_ITEM); return panel; }
private void updateComponents() { _listPanel.removeAll(); final String[] names = _catalog.getStringPatternNames(); Arrays.sort(names); final Icon icon = imageManager.getImageIcon("images/model/stringpattern.png"); for (final String name : names) { final StringPattern stringPattern = _catalog.getStringPattern(name); final DCLabel stringPatternLabel = DCLabel.dark( "<html><b>" + name + "</b><br/>" + getDescription(stringPattern) + "</html>"); stringPatternLabel.setIcon(icon); stringPatternLabel.setMaximumWidth(ReferenceDataDialog.REFERENCE_DATA_ITEM_MAX_WIDTH); final JButton editButton = WidgetFactory.createSmallButton("images/actions/edit.png"); editButton.setToolTipText("Edit string pattern"); if (stringPattern instanceof RegexStringPattern) { editButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { RegexStringPatternDialog dialog = new RegexStringPatternDialog( (RegexStringPattern) stringPattern, _catalog, _windowContext); dialog.setVisible(true); } }); } else if (stringPattern instanceof SimpleStringPattern) { editButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SimpleStringPatternDialog dialog = new SimpleStringPatternDialog( (SimpleStringPattern) stringPattern, _catalog, _windowContext); dialog.setVisible(true); } }); } else { editButton.setEnabled(false); } final JButton removeButton = WidgetFactory.createSmallButton(IconUtils.ACTION_REMOVE); removeButton.setToolTipText("Remove string pattern"); removeButton.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int result = JOptionPane.showConfirmDialog( StringPatternListPanel.this, "Are you sure you wish to remove the string pattern '" + name + "'?", "Confirm remove", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { _catalog.removeStringPattern(stringPattern); } } }); if (!_catalog.isStringPatternMutable(name)) { editButton.setEnabled(false); removeButton.setEnabled(false); } final DCPanel stringPatternPanel = new DCPanel(); stringPatternPanel.setBorder(WidgetUtils.BORDER_LIST_ITEM); WidgetUtils.addToGridBag(stringPatternLabel, stringPatternPanel, 0, 0, 1.0, 0.0); WidgetUtils.addToGridBag(editButton, stringPatternPanel, 1, 0, GridBagConstraints.EAST); WidgetUtils.addToGridBag(removeButton, stringPatternPanel, 2, 0, GridBagConstraints.EAST); _listPanel.add(stringPatternPanel); } if (names.length == 0) { _listPanel.add(DCLabel.dark("(none)")); } updateUI(); }