示例#1
0
 public Map getData() {
   this.demoData = getFactory().getDemoData();
   return demoData.getData();
 }
  public Component getDemoPanel() {
    final String[] fontNames = DemoData.getFontNames();
    // create file text field
    List<String> urls = null;
    try {
      urls = readUrls();
    } catch (IOException e) {
      //noinspection CallToPrintStackTrace
      e.printStackTrace();
    }

    JTextField urlTextField = new JTextField("http://");
    urlTextField.setName("URL IntelliHint");
    SelectAllUtils.install(urlTextField);
    ListDataIntelliHints intelliHints = new ListDataIntelliHints<String>(urlTextField, urls);
    intelliHints.setCaseSensitive(false);

    JTextField pathTextField = new JTextField();
    SelectAllUtils.install(pathTextField);
    FileIntelliHints fileIntelliHints = new FileIntelliHints(pathTextField);
    fileIntelliHints.setFilter(
        new FilenameFilter() {
          public boolean accept(File dir, String name) {
            return !_applyFileFilter
                || dir.getAbsolutePath().contains("Program")
                || name.contains("Program");
          }
        });
    fileIntelliHints.setFolderOnly(false);
    fileIntelliHints.setFollowCaret(true);
    fileIntelliHints.setShowFullPath(false);

    // create file text field
    JTextField fileTextField = new JTextField();
    fileTextField.setName("File IntelliHint");
    SelectAllUtils.install(fileTextField);
    new FileIntelliHints(fileTextField);

    // create file text field
    JTextArea fileTextArea = new JTextArea();
    new FileIntelliHints(fileTextArea);
    fileTextArea.setRows(4);

    // create file text field
    JTextField fontTextField = new JTextField();
    fontTextField.setName("Font IntelliHint");
    SelectAllUtils.install(fontTextField);
    ListDataIntelliHints fontIntelliHints =
        new ListDataIntelliHints<String>(fontTextField, fontNames);
    fontIntelliHints.setCaseSensitive(false);

    JTextField textField = new JTextField();
    SelectAllUtils.install(textField);
    //noinspection UnusedDeclaration
    new AbstractListIntelliHints(textField) {
      protected JLabel _messageLabel;

      @Override
      public JComponent createHintsComponent() {
        JPanel panel = (JPanel) super.createHintsComponent();
        _messageLabel = new JLabel();
        panel.add(_messageLabel, BorderLayout.BEFORE_FIRST_LINE);
        return panel;
      }

      // update list model depending on the data in textfield
      public boolean updateHints(Object value) {
        if (value == null) {
          return false;
        }
        String s = value.toString();
        s = s.trim();
        if (s.length() == 0) {
          return false;
        }
        try {
          long l = Long.parseLong(s);
          boolean prime = isProbablePrime(l);
          _messageLabel.setText("");
          if (prime) {
            return false;
          } else {
            Vector<Long> list = new Vector<Long>();
            long nextPrime = l;
            for (int i = 0; i < 10; i++) {
              nextPrime = nextPrime(nextPrime);
              list.add(nextPrime);
            }
            setListData(list);
            _messageLabel.setText("Next 10 prime numbers:");
            _messageLabel.setForeground(Color.DARK_GRAY);
            return true;
          }
        } catch (NumberFormatException e) {
          setListData(new Object[0]);
          _messageLabel.setText("Invalid long number");
          setListData(new Object[0]);
          _messageLabel.setForeground(Color.RED);
          return true;
        }
      }
    };

    DefaultTableModel model =
        new DefaultTableModel(0, 1) {
          private static final long serialVersionUID = -2794741068912785630L;

          @Override
          public Class<?> getColumnClass(int columnIndex) {
            return String.class;
          }

          @Override
          public String getColumnName(int column) {
            return "Font";
          }
        };
    model.addRow(new Object[] {"Arial"});
    model.addRow(new Object[] {"Tahoma"});
    SortableTable table = new SortableTable(model);
    table
        .getColumnModel()
        .getColumn(0)
        .setCellEditor(
            new TextFieldCellEditor(String.class) {
              private static final long serialVersionUID = 2023654568542192380L;

              @Override
              protected JTextField createTextField() {
                JTextField cellEditorTextField = new JTextField();
                ListDataIntelliHints fontIntellihints =
                    new ListDataIntelliHints<String>(cellEditorTextField, fontNames);
                fontIntellihints.setCaseSensitive(false);
                return cellEditorTextField;
              }
            });
    table.setPreferredScrollableViewportSize(new Dimension(100, 100));

    JPanel panel = new JPanel();
    panel.setLayout(new JideBoxLayout(panel, JideBoxLayout.Y_AXIS, 3));
    panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

    panel.add(new JLabel("ListDataIntelliHints TextField for URLs: "));
    panel.add(urlTextField);
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    // create path text field
    panel.add(
        new JLabel("FileIntelliHints TextField for paths (folders only, show partial path):"));
    panel.add(pathTextField);
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    panel.add(
        new JLabel("FileIntelliHints TextField for files (files and folders, show full path):"));
    panel.add(fileTextField);
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    panel.add(new JLabel("FileIntelliHints TextArea for files (each line is for a new file):"));
    panel.add(new JScrollPane(fileTextArea));
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    panel.add(new JLabel("IntelliHints TextField to choose a font:"));
    panel.add(fontTextField);
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    panel.add(new JLabel("A custom IntelliHints for prime numbers: "));
    panel.add(textField);
    panel.add(Box.createVerticalStrut(6), JideBoxLayout.FIX);

    panel.add(new JLabel("Using IntelliHint in JTable's cell editor"));
    panel.add(new JScrollPane(table), JideBoxLayout.FLEXIBLE);

    panel.add(Box.createGlue(), JideBoxLayout.VARY);

    return panel;
  }