Java源码示例:org.jdesktop.swingx.JXHyperlink

示例1
public SendStatsConfigView(OtrosApplication otrosApplication) {
  super("sendStats", "Stats sending", DESCRIPTION);
  view = new JPanel(new MigLayout());

  JXHyperlink statsLink = new JXHyperlink(new AbstractAction("Open page with usage report") {
    @Override
    public void actionPerformed(ActionEvent e) {
      try {
        Desktop.getDesktop().browse(new URI("https://github.com/otros-systems/otroslogviewer-stats"));
      } catch (IOException | URISyntaxException e1) {
        LOGGER.warn("Can't open page with stats");
      }
    }
  });


  view.add(sendAnonymousStatsData, "wrap");
  view.add(notifyAboutSending, "wrap");
  view.add(new JXHyperlink(new ShowStats(otrosApplication)), "wrap");
  view.add(statsLink, "wrap");
  view.add(nextSend, "wrap");
}
 
示例2
@Override
public void installUI( JComponent c ) {
	// must get UI defaults here because installDefaults() is invoked after
	// installComponents(), which uses these values to create popup button

	padding = UIManager.getInsets( "ComboBox.padding" );

	arrowType = UIManager.getString( "Component.arrowType" );
	borderColor = UIManager.getColor( "Component.borderColor" );
	disabledBorderColor = UIManager.getColor( "Component.disabledBorderColor" );

	disabledBackground = UIManager.getColor( "ComboBox.disabledBackground" );

	buttonBackground = UIManager.getColor( "ComboBox.buttonBackground" );
	buttonArrowColor = UIManager.getColor( "ComboBox.buttonArrowColor" );
	buttonDisabledArrowColor = UIManager.getColor( "ComboBox.buttonDisabledArrowColor" );
	buttonHoverArrowColor = UIManager.getColor( "ComboBox.buttonHoverArrowColor" );

	super.installUI( c );

	LookAndFeel.installProperty( datePicker, "opaque", false );

	// hack JXDatePicker.TodayPanel colors
	// (there is no need to uninstall these changes because only UIResources are used,
	// which are automatically replaced when switching LaF)
	JPanel linkPanel = datePicker.getLinkPanel();
	if( linkPanel instanceof JXPanel && linkPanel.getClass().getName().equals( "org.jdesktop.swingx.JXDatePicker$TodayPanel" ) ) {
		((JXPanel)linkPanel).setBackgroundPainter( null );
		linkPanel.setBackground( UIManager.getColor( "JXMonthView.background" ) );

		if( linkPanel.getComponentCount() >= 1 && linkPanel.getComponent( 0 ) instanceof JXHyperlink ) {
			JXHyperlink todayLink = (JXHyperlink) linkPanel.getComponent( 0 );
			todayLink.setUnclickedColor( UIManager.getColor( "Hyperlink.linkColor" ) );
			todayLink.setClickedColor( UIManager.getColor( "Hyperlink.visitedColor" ) );
		}
	}
}
 
示例3
public void update() {
    removeAll();
    btn2win.clear();
    for (Iterator<Window> it = windows.iterator(); it.hasNext();) {
        Window window = it.next();
        JButton button = new JXHyperlink();
        button.setFocusable(false);
        button.setText(StringUtils.trimToEmpty(window.getCaption()));
        button.addActionListener(new ValidationAwareActionListener() {
            @Override
            public void actionPerformedAfterValidation(ActionEvent e) {
                JButton btn = (JButton) e.getSource();
                Window win = btn2win.get(btn);
                if (win != null) {
                    fireListeners(win);
                }
            }
        });

        btn2win.put(button, window);

        if (it.hasNext()) {
            add(button);
            JLabel separatorLab = new JLabel(">");
            add(separatorLab);
        } else {
            add(new JLabel(window.getCaption()));
        }
    }
}
 
示例4
public RowsCountComponent() {
    LC lc = new LC();
    lc.hideMode(2);
    lc.insetsAll("2");

    layout = new MigLayout(lc);
    if (LayoutAdapter.isDebug()) {
        lc.debug(1000);
    }
    setLayout(layout);

    firstButton = new JButton("<<");
    add(firstButton);
    firstButton.setPreferredSize(size);
    firstButton.setMinimumSize(size);

    prevButton = new JButton("<");
    add(prevButton);
    prevButton.setPreferredSize(size);
    prevButton.setMinimumSize(size);

    label = new JLabel();
    label.setMinimumSize(size);
    add(label);

    countButton = new JXHyperlink();
    countButton.setText("[?]");
    add(countButton);

    nextButton = new JButton(">");
    add(nextButton);
    nextButton.setPreferredSize(size);
    nextButton.setMinimumSize(size);

    lastButton = new JButton(">>");
    add(lastButton);
    lastButton.setPreferredSize(size);
    lastButton.setMinimumSize(size);
}
 
示例5
public DesktopLink() {
    impl = new JXHyperlink();
    impl.setAction(new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String targetUrl = DesktopLink.this.url;
            if (StringUtils.isNotEmpty(targetUrl)) {
                DesktopWindowManager wm = App.getInstance().getMainFrame().getWindowManager();
                wm.showWebPage(targetUrl, Collections.<String, Object>emptyMap());
            }
        }
    });
}
 
示例6
CollectStatsPage() {
  super("Send anonymous usage data", "Sends anonymous statistic");
  this.setLayout(new MigLayout());

  final JCheckBox checkVersionOnStartup = new JCheckBox("Check for new version on startup", true);
  checkVersionOnStartup.setName(Config.CHECK_FOR_NEW_VERSION);

  final JCheckBox sendAnonymousStatsData = new JCheckBox("Send anonymous stats data", true);
  sendAnonymousStatsData.setName(Config.COLLECT_STATS);

  final JCheckBox notifyAboutSending = new JCheckBox("Notify when sending stats", false);
  checkVersionOnStartup.setName(Config.COLLECT_STATS_NOTIFY);

  JXHyperlink statsLink = new JXHyperlink(new AbstractAction("Stats will be available here") {
    @Override
    public void actionPerformed(ActionEvent e) {
      try {
        Desktop.getDesktop().browse(new URI("https://github.com/otros-systems/otroslogviewer-stats"));
      } catch (IOException | URISyntaxException e1) {
       LOGGER.warn("Can't open page with stats");
      }
    }
  });

  final JTextArea textArea = new JTextArea(EXAMPLE_STATS);
  textArea.setEditable(false);
  textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, textArea.getFont().getSize()));
  final JScrollPane scrollPane = new JScrollPane(textArea);
  scrollPane.setBorder(BorderFactory.createTitledBorder("Example stats"));
  this.add(checkVersionOnStartup, "wrap,left");
  this.add(sendAnonymousStatsData, "wrap, left");
  this.add(notifyAboutSending, "wrap, left");
  this.add(statsLink, "wrap, left");
  this.add(scrollPane);
}
 
示例7
@Override
protected void addBasicDefaults(LookAndFeelAddons addon, DefaultsList defaults) {
  super.addBasicDefaults(addon, defaults);
  defaults.add(JXHyperlink.uiClassID, "org.jdesktop.swingx.plaf.basic.BasicHyperlinkUI");
  //register color that works for light and dark theme
  defaults.add("Hyperlink.linkColor", new ColorUIResource(80, 0x80, 0xFF));
}
 
示例8
private void constructEarliestBegin(Container propertiesPanel) {
  final JXHyperlink copyFromBeginDate = new JXHyperlink(new GPAction("option.taskProperties.main.earliestBegin.copyBeginDate") {
    @Override
    public void actionPerformed(ActionEvent e) {
      setThird(myTaskScheduleDates.getStart());
    }

    @Override
    protected String getLocalizedName() {
      String fallbackLabel = String.format("%s %s", language.getText("copy"), language.getText("generic.startDate.label"));
      return MoreObjects.firstNonNull(super.getLocalizedName(), fallbackLabel);
    }

  });
  myEarliestBeginDatePicker = UIUtil.createDatePicker();
  Box valueBox = Box.createHorizontalBox();
  myOnEarliestBeginToggle = new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
      myEarliestBeginDatePicker.setEnabled(myEarliestBeginEnabled.isSelected());
      if (getThird() == null) {
        setThird(myTaskScheduleDates.getStart());
      }
      copyFromBeginDate.setEnabled(myEarliestBeginEnabled.isSelected());
    }
  };
  myEarliestBeginEnabled = new JCheckBox(myOnEarliestBeginToggle);
  valueBox.add(myEarliestBeginEnabled);
  valueBox.add(Box.createHorizontalStrut(10));
  valueBox.add(myEarliestBeginDatePicker);
  valueBox.add(Box.createHorizontalStrut(5));
  valueBox.add(copyFromBeginDate);
  propertiesPanel.add(new JLabel(language.getText("earliestBegin")));
  propertiesPanel.add(valueBox);
}
 
示例9
private JXHyperlink createHistoryLink(final DataBean data) {
	JXHyperlink link = new JXHyperlink();
	link.setText("Analysis history");
	link.addActionListener(new ActionListener() {		
		@Override
		public void actionPerformed(ActionEvent e) {				
			application.showHistoryScreenFor(data);
		}
	});
	return link;		
}
 
示例10
public static JXHyperlink createLink(String text, Action action) {
	JXHyperlink link = new JXHyperlink();
	link.setBorder(null);
	link.setMargin(new Insets(0, 0, 0, 0));
	link.setAction(action);
	link.setText(text); // must be after setAction
	return link;
}
 
示例11
@Override
protected void configure(final JXHyperlink link) {
    super.configure(link);
    link.setFocusPainted(false);
}
 
示例12
@Override
protected JButton createImplementation() {
    final JXHyperlink link = new JXHyperlink();
    return link;
}
 
示例13
private void initGui() {
  GridBagLayout bagLayout = new GridBagLayout();
  GridBagConstraints bagConstraints = new GridBagConstraints();
  bagConstraints.anchor = GridBagConstraints.EAST;
  bagConstraints.gridwidth = 3;
  bagConstraints.ipadx = 10;
  bagConstraints.ipady = 10;
  bagConstraints.gridy = 0;
  bagConstraints.fill = GridBagConstraints.NONE;
  this.setLayout(bagLayout);

  bagConstraints.insets = new Insets(5, 0, 0, 0);

  bagConstraints.insets = new Insets(2, 5, 1, 5);
  bagConstraints.anchor = GridBagConstraints.CENTER;
  bagConstraints.gridy++;

  this.add(jLabel, bagConstraints);
  bagConstraints.fill = GridBagConstraints.HORIZONTAL;
  bagConstraints.gridy++;

  final Action tailAction = new TailLogWithAutoDetectActionListener(otrosApplication);
  final JButton tailButton = new JButton(tailAction);
  tailButton.setName("Open log files");
  OtrosSwingUtils.fontSize2(tailButton);
  tailButton.setIcon(Icons.FOLDER_OPEN);
  this.add(tailButton, bagConstraints);
  bagConstraints.gridy++;

  final AdvanceOpenAction advanceOpenAction = new AdvanceOpenAction(otrosApplication);
  final JButton advanceOpenButton = new JButton(advanceOpenAction);
  advanceOpenButton.setName("Merge log files");
  OtrosSwingUtils.fontSize2(advanceOpenButton);
  advanceOpenButton.setIcon(Icons.ARROW_JOIN_24);
  this.add(advanceOpenButton, bagConstraints);
  bagConstraints.gridy++;

  OpenLogInvestigationAction openLogInvestigationAction = new OpenLogInvestigationAction(otrosApplication);
  JButton jb2 = new JButton("Open log investigation", Icons.IMPORT_24);
  OtrosSwingUtils.fontSize2(jb2);
  jb2.addActionListener(openLogInvestigationAction);
  this.add(jb2, bagConstraints);
  bagConstraints.gridy++;


  final JButton clipboardButton = new JButton(new ParseClipboard(otrosApplication));
  clipboardButton.setName("Parse clipboard");
  this.add(OtrosSwingUtils.fontSize2(clipboardButton), bagConstraints);
  bagConstraints.gridy++;

  final JButton startSocketButton = new JButton(new StartSocketListener(otrosApplication, logReaders));
  startSocketButton.setName("Start socket listener");
  this.add(OtrosSwingUtils.fontSize2(startSocketButton), bagConstraints);
  bagConstraints.gridy++;

  bagConstraints.insets = new Insets(20, 5, 20, 5);
  this.add(new JSeparator(SwingConstants.HORIZONTAL), bagConstraints);
  bagConstraints.insets = new Insets(2, 5, 0, 5);
  bagConstraints.gridy++;

  final JButton convertPatterButton = OtrosSwingUtils.fontSize2(new JButton(new ConvertLogbackLog4jPatternAction(otrosApplication)));
  this.add(convertPatterButton, bagConstraints);
  bagConstraints.gridy++;

  bagConstraints.gridy++;
  JTextArea visitTf = new JTextArea(
    "Have a different log format? Go to https://github.com/otros-systems/otroslogviewer/wiki/Log4jPatternLayout\nto check how to create a log parser based on the log4j PatternLayout.");
  visitTf.setEditable(false);
  visitTf.setBackground(new JLabel().getBackground());
  visitTf.setBorder(null);
  bagConstraints.gridwidth = 2;
  bagConstraints.gridx = 0;
  this.add(visitTf, bagConstraints);

  GoToDonatePageAction goToDonatePageAction = new GoToDonatePageAction(otrosApplication);
  JXHyperlink jxHyperlink = new JXHyperlink(goToDonatePageAction);
  bagConstraints.gridy++;
  bagConstraints.gridwidth = 2;
  bagConstraints.anchor = GridBagConstraints.EAST;
  bagConstraints.fill = GridBagConstraints.NONE;

  this.add(jxHyperlink, bagConstraints);
}
 
示例14
/** Construct the general panel */
private void constructGeneralPanel() {
  final JPanel propertiesPanel = new JPanel(new SpringLayout());

  propertiesPanel.add(new JLabel(language.getText("name")));
  nameField1 = new JTextField(20);
  nameField1.setName("name_of_task");
  propertiesPanel.add(nameField1);
  Pair<String, JCheckBox> checkBox = constructCheckBox();
  if (checkBox != null) {
    propertiesPanel.add(new JLabel(checkBox.first()));
    propertiesPanel.add(checkBox.second());
  }
  addEmptyRow(propertiesPanel);

  myTaskScheduleDates.insertInto(propertiesPanel);

  constructEarliestBegin(propertiesPanel);
  addEmptyRow(propertiesPanel);

  propertiesPanel.add(new JLabel(language.getText("priority")));
  priorityComboBox = new JComboBox();
  for (Task.Priority p : Task.Priority.values()) {
    priorityComboBox.addItem(language.getText(p.getI18nKey()));
  }
  priorityComboBox.setEditable(false);
  propertiesPanel.add(priorityComboBox);

  propertiesPanel.add(new JLabel(language.getText("advancement")));
  SpinnerNumberModel spinnerModel = new SpinnerNumberModel(0, 0, 100, 1);
  percentCompleteSlider = new JSpinner(spinnerModel);
  propertiesPanel.add(percentCompleteSlider);

  addEmptyRow(propertiesPanel);

  propertiesPanel.add(new JLabel(language.getText("option.taskProperties.main.showInTimeline.label")));
  myShowInTimeline = new JCheckBox();
  propertiesPanel.add(myShowInTimeline);

  propertiesPanel.add(new JLabel(language.getText("shape")));
  shapeComboBox = new JPaintCombo(ShapeConstants.PATTERN_LIST);
  propertiesPanel.add(shapeComboBox);

  OptionsPageBuilder builder = new OptionsPageBuilder(GanttTaskPropertiesBean.this, OptionsPageBuilder.TWO_COLUMN_LAYOUT);
  builder.setUiFacade(myUIfacade);
  JPanel colorBox = new JPanel(new BorderLayout(5, 0));
  colorBox.add(builder.createColorComponent(myTaskColorOption).getJComponent(), BorderLayout.WEST);
  //colorBox.add(Box.createHorizontalStrut(5));
  colorBox.add(new JXHyperlink(mySetDefaultColorAction), BorderLayout.CENTER);
  //colorBox.add(Box.createHorizontalGlue());
  //colorBox.add(Box.createHorizontalGlue());
  //colorBox.add(Box.createHorizontalGlue());

  propertiesPanel.add(new JLabel(language.getText("colors")));
  propertiesPanel.add(colorBox);

  Box weblinkBox = Box.createHorizontalBox();
  tfWebLink = new JTextField(20);
  weblinkBox.add(tfWebLink);
  weblinkBox.add(Box.createHorizontalStrut(2));
  bWebLink = new TestGanttRolloverButton(new ImageIcon(getClass().getResource("/icons/web_16.gif")));
  bWebLink.setToolTipText(GanttProject.getToolTip(language.getText("openWebLink")));
  weblinkBox.add(bWebLink);

  bWebLink.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
      // link to open the web link
      if (!BrowserControl.displayURL(tfWebLink.getText())) {
        GanttDialogInfo gdi = new GanttDialogInfo(null, GanttDialogInfo.ERROR, GanttDialogInfo.YES_OPTION,
            language.getText("msg4"), language.getText("error"));
        gdi.setVisible(true);
      }
    }
  });
  propertiesPanel.add(new JLabel(language.getText("webLink")));
  propertiesPanel.add(weblinkBox);

  SpringUtilities.makeCompactGrid(propertiesPanel, propertiesPanel.getComponentCount() / 2, 2, 1, 1, 5, 5);

  JPanel propertiesWrapper = new JPanel(new BorderLayout());
  propertiesWrapper.add(propertiesPanel, BorderLayout.NORTH);
  generalPanel = new JPanel(new SpringLayout());
  //generalPanel.add(new JLayer<JPanel>(propertiesPanel, layerUi));
  generalPanel.add(propertiesWrapper);
  generalPanel.add(notesPanel);
  SpringUtilities.makeCompactGrid(generalPanel, 1, 2, 1, 1, 10, 5);
}
 
示例15
@Override
public void addImportLinks(QuickLinkPanel quickLinkPanel, List<JXHyperlink> importLinks) {
	// do nothing
}
 
示例16
@Override
public void addImportLinks(QuickLinkPanel quickLinkPanel, List<JXHyperlink> importLinks) {
	// do nothing
}
 
示例17
@Override
public void addImportLinks(QuickLinkPanel quickLinkPanel, List<JXHyperlink> importLinks) {
	// do nothing
}
 
示例18
public LinkMouseListener(JXHyperlink link) {
	this.link = link;
}
 
示例19
public static void addLinks(String description, List<JXHyperlink> links, String iconPath, GridBagConstraints c, JComponent component) {
	LinkUtil.addLinks(description, links, VisualConstants.getIcon(iconPath), c, component, MAX_ROW_CHARS, Color.white);
}
 
示例20
public static void addLink(String description, JXHyperlink link, ImageIcon icon, GridBagConstraints c, JComponent component, int maxRowChars, Color background) {
	List<JXHyperlink> list = new LinkedList<JXHyperlink>();
	list.add(link);
	addLinks(description, list, icon, c, component, maxRowChars, background);
}
 
示例21
private Component createVisualisations() {
	JPanel panel = getPanelBase("wrap 1");
	
	List<VisualisationMethod> visualisations = VisualisationToolBar.getMethodsFor(datas);
		
	for (VisualisationMethod method : visualisations) {

		JXHyperlink link = new JXHyperlink();
		
		link.setBackground(new Color(0.95f, 0.95f, 0.95f));					
		
		link.addMouseListener(new LinkMouseListener(link));
		//hide focus border because it doesn't obey component size
		link.setFocusPainted(false);

		link.setIcon(method.getIcon());
		link.setIconTextGap(16);
		link.addActionListener(new VisualisationStarter(method, Session.getSession().getApplication()));
		link.setText(method.getName());
		
		panel.add(link, "width 300!, height 50!");
		
		focusableLinks.add(link);
	}
	
	return panel;
}
 
示例22
/**
 * Adds import links link list.
 * 
 * @param quickLinkPanel quick link panel used when creating the links
 * @param importLinks link list to add to
 */
public void addImportLinks(QuickLinkPanel quickLinkPanel, List<JXHyperlink> importLinks);
 
示例23
public static void addLink(String description, JXHyperlink link, String iconPath, GridBagConstraints c, JComponent component) {

	LinkUtil.addLink(description, link, VisualConstants.getIcon(iconPath), c, component, MAX_ROW_CHARS, Color.white);
}