use of javax.swing.tree.DefaultTreeCellRenderer in project jadx by skylot.
the class MainWindow method initUI.
private void initUI() {
mainPanel = new JPanel(new BorderLayout());
JSplitPane splitPane = new JSplitPane();
splitPane.setResizeWeight(SPLIT_PANE_RESIZE_WEIGHT);
mainPanel.add(splitPane);
DefaultMutableTreeNode treeRoot = new DefaultMutableTreeNode(NLS.str("msg.open_file"));
treeModel = new DefaultTreeModel(treeRoot);
tree = new JTree(treeModel);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
treeClickAction();
}
});
tree.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
treeClickAction();
}
}
});
tree.setCellRenderer(new DefaultTreeCellRenderer() {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean isLeaf, int row, boolean focused) {
Component c = super.getTreeCellRendererComponent(tree, value, selected, expanded, isLeaf, row, focused);
if (value instanceof JNode) {
setIcon(((JNode) value).getIcon());
}
return c;
}
});
tree.addTreeWillExpandListener(new TreeWillExpandListener() {
@Override
public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException {
TreePath path = event.getPath();
Object node = path.getLastPathComponent();
if (node instanceof JClass) {
JClass cls = (JClass) node;
cls.getRootClass().load();
}
}
@Override
public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException {
}
});
progressPane = new ProgressPanel(this, true);
JPanel leftPane = new JPanel(new BorderLayout());
leftPane.add(new JScrollPane(tree), BorderLayout.CENTER);
leftPane.add(progressPane, BorderLayout.PAGE_END);
splitPane.setLeftComponent(leftPane);
tabbedPane = new TabbedPane(this);
splitPane.setRightComponent(tabbedPane);
dropTarget = new DropTarget(this, DnDConstants.ACTION_COPY, new MainDropTarget(this));
setContentPane(mainPanel);
setTitle(DEFAULT_TITLE);
}
use of javax.swing.tree.DefaultTreeCellRenderer in project omegat by omegat-org.
the class PreferencesWindowController method show.
@SuppressWarnings("serial")
public void show(Window parent, Class<? extends IPreferencesController> initialSelection) {
dialog = new JDialog();
dialog.setTitle(OStrings.getString("PREFERENCES_TITLE_NO_SELECTION"));
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
dialog.setModal(true);
StaticUIUtils.setWindowIcon(dialog);
outerPanel = new PreferencePanel();
innerPanel = new PreferenceViewSelectorPanel();
outerPanel.prefsViewPanel.add(innerPanel, BorderLayout.CENTER);
dialog.getContentPane().add(outerPanel);
overlay = new HighlightablePanel(dialog.getRootPane(), innerPanel.selectedPrefsScrollPane);
// Prevent ugly white viewport background with GTK LAF
innerPanel.selectedPrefsScrollPane.getViewport().setOpaque(false);
innerPanel.selectedPrefsScrollPane.setBackground(innerPanel.getBackground());
innerPanel.searchTextField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void removeUpdate(DocumentEvent e) {
SwingUtilities.invokeLater(PreferencesWindowController.this::searchAndFilterTree);
}
@Override
public void insertUpdate(DocumentEvent e) {
SwingUtilities.invokeLater(PreferencesWindowController.this::searchAndFilterTree);
}
@Override
public void changedUpdate(DocumentEvent e) {
SwingUtilities.invokeLater(PreferencesWindowController.this::searchAndFilterTree);
}
});
innerPanel.searchTextField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_UP) {
innerPanel.availablePrefsTree.getActionForKeyStroke(KeyStroke.getKeyStrokeForEvent(e)).actionPerformed(new ActionEvent(innerPanel.availablePrefsTree, 0, null));
innerPanel.availablePrefsTree.requestFocusInWindow();
e.consume();
}
}
});
innerPanel.searchTextField.addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
innerPanel.searchTextField.selectAll();
searchCurrentView();
preloadGuis();
}
});
innerPanel.clearButton.addActionListener(e -> {
innerPanel.searchTextField.clear();
});
innerPanel.availablePrefsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
DefaultMutableTreeNode root = createNodeTree();
walkTree(root, node -> {
IPreferencesController view = (IPreferencesController) node.getUserObject();
if (view != null) {
view.addFurtherActionListener(this);
}
});
innerPanel.availablePrefsTree.setModel(new DefaultTreeModel(root));
innerPanel.availablePrefsTree.addTreeSelectionListener(e -> {
handleViewSelection(e);
updateTitle();
});
innerPanel.availablePrefsTree.addTreeExpansionListener(new TreeExpansionListener() {
@Override
public void treeExpanded(TreeExpansionEvent event) {
SwingUtilities.invokeLater(PreferencesWindowController.this::adjustTreeSize);
}
@Override
public void treeCollapsed(TreeExpansionEvent event) {
}
});
innerPanel.selectedPrefsScrollPane.getViewport().setBackground(innerPanel.getBackground());
DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) innerPanel.availablePrefsTree.getCellRenderer();
renderer.setIcon(null);
renderer.setLeafIcon(null);
renderer.setOpenIcon(null);
renderer.setClosedIcon(null);
renderer.setDisabledIcon(null);
outerPanel.okButton.addActionListener(e -> {
if (currentView == null || currentView.validate()) {
new SwingWorker<Void, Void>() {
@Override
protected Void doInBackground() throws Exception {
doSave();
return null;
}
@Override
protected void done() {
if (getIsReloadRequired()) {
SwingUtilities.invokeLater(ProjectUICommands::promptReload);
}
}
}.execute();
StaticUIUtils.closeWindowByEvent(dialog);
}
});
outerPanel.cancelButton.addActionListener(e -> StaticUIUtils.closeWindowByEvent(dialog));
// Hide undo, reset buttons on outer panel
outerPanel.undoButton.setVisible(false);
outerPanel.resetButton.setVisible(false);
// Use ones on inner panel to indicate that actions are view-specific
innerPanel.undoButton.addActionListener(e -> currentView.undoChanges());
innerPanel.resetButton.addActionListener(e -> currentView.restoreDefaults());
dialog.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
walkTree(root, node -> {
// Start with tree fully expanded
if (node.getChildCount() > 0) {
innerPanel.availablePrefsTree.expandPath(new TreePath(node.getPath()));
}
});
SwingUtilities.invokeLater(() -> {
if (initialSelection != null) {
selectView(initialSelection);
}
});
}
});
innerPanel.availablePrefsScrollPane.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
SwingUtilities.invokeLater(PreferencesWindowController.this::adjustTreeSize);
}
});
ActionMap actionMap = innerPanel.getActionMap();
InputMap inputMap = innerPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
actionMap.put(ACTION_KEY_NEW_SEARCH, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
innerPanel.searchTextField.requestFocusInWindow();
innerPanel.searchTextField.selectAll();
}
});
KeyStroke searchKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask());
inputMap.put(searchKeyStroke, ACTION_KEY_NEW_SEARCH);
actionMap.put(ACTION_KEY_CLEAR_OR_CLOSE, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if (!innerPanel.searchTextField.isEmpty()) {
// Move focus away from search field
innerPanel.availablePrefsTree.requestFocusInWindow();
innerPanel.clearButton.doClick();
} else {
StaticUIUtils.closeWindowByEvent(dialog);
}
}
});
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), ACTION_KEY_CLEAR_OR_CLOSE);
// Don't let Enter close the dialog
innerPanel.searchTextField.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), ACTION_KEY_DO_SEARCH);
innerPanel.searchTextField.getActionMap().put(ACTION_KEY_DO_SEARCH, new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
searchCurrentView();
}
});
String searchKeyText = StaticUIUtils.getKeyStrokeText(searchKeyStroke);
innerPanel.searchTextField.setHintText(OStrings.getString("PREFERENCES_SEARCH_HINT", searchKeyText));
// Set initial state
searchAndFilterTree();
adjustTreeSize();
dialog.getRootPane().setDefaultButton(outerPanel.okButton);
dialog.setPreferredSize(new Dimension(800, 500));
dialog.pack();
// Prevent search field from getting initial focus
innerPanel.availablePrefsTree.requestFocusInWindow();
dialog.setLocationRelativeTo(parent);
dialog.setVisible(true);
}
use of javax.swing.tree.DefaultTreeCellRenderer in project JMRI by JMRI.
the class CatalogPanel method init.
protected void init(boolean treeDnD) {
_model = new DefaultTreeModel(new CatalogTreeNode("mainRoot"));
if (treeDnD) {
// index editor (right pane)
_dTree = new DropJTree(_model);
_noDrag = true;
} else {
// Catalog (left pane index editor or all icon editors)
_dTree = new JTree(_model);
_noDrag = false;
}
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
renderer.setLeafIcon(renderer.getClosedIcon());
_dTree.setCellRenderer(renderer);
_dTree.setRootVisible(false);
_dTree.setShowsRootHandles(true);
_dTree.setScrollsOnExpand(true);
//_dTree.setDropMode(DropMode.ON);
_dTree.getSelectionModel().setSelectionMode(DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);
_dTree.addTreeSelectionListener((TreeSelectionEvent e) -> {
updatePanel();
});
_dTree.setExpandsSelectedPaths(true);
_treePane.setViewportView(_dTree);
// setupPanel();
}
use of javax.swing.tree.DefaultTreeCellRenderer in project jdk8u_jdk by JetBrains.
the class SynthTreeUI method configureRenderer.
private void configureRenderer(SynthContext context) {
TreeCellRenderer renderer = tree.getCellRenderer();
if (renderer instanceof DefaultTreeCellRenderer) {
DefaultTreeCellRenderer r = (DefaultTreeCellRenderer) renderer;
SynthStyle style = context.getStyle();
context.setComponentState(ENABLED | SELECTED);
Color color = r.getTextSelectionColor();
if (color == null || (color instanceof UIResource)) {
r.setTextSelectionColor(style.getColor(context, ColorType.TEXT_FOREGROUND));
}
color = r.getBackgroundSelectionColor();
if (color == null || (color instanceof UIResource)) {
r.setBackgroundSelectionColor(style.getColor(context, ColorType.TEXT_BACKGROUND));
}
context.setComponentState(ENABLED);
color = r.getTextNonSelectionColor();
if (color == null || color instanceof UIResource) {
r.setTextNonSelectionColor(style.getColorForState(context, ColorType.TEXT_FOREGROUND));
}
color = r.getBackgroundNonSelectionColor();
if (color == null || color instanceof UIResource) {
r.setBackgroundNonSelectionColor(style.getColorForState(context, ColorType.TEXT_BACKGROUND));
}
}
}
use of javax.swing.tree.DefaultTreeCellRenderer in project JMRI by JMRI.
the class RosterGroupsPanel method getTree.
/**
* Get the JTree containing the roster groups.
*
* @return The internal JTree
*/
public final JTree getTree() {
if (_tree == null) {
TreeSelectionModel sm = new DefaultTreeSelectionModel();
DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
sm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
renderer.setLeafIcon(null);
renderer.setClosedIcon(null);
renderer.setOpenIcon(null);
_tree = new JTree(getModel());
_tree.setUI(new TreeUI());
_tree.putClientProperty("JTree.lineStyle", "None");
_tree.setRootVisible(false);
_tree.expandRow(0);
_tree.setSelectionModel(sm);
_tree.setCellRenderer(renderer);
_tree.addTreeWillExpandListener(new TreeWillExpandListener());
_TSL = new TreeSelectionListener();
_tree.addTreeSelectionListener(_TSL);
_tree.setDragEnabled(true);
_tree.setDropMode(DropMode.ON);
_tree.setTransferHandler(new TransferHandler());
_tree.addMouseListener(new MouseAdapter());
setSelectionToGroup(selectedRosterGroup);
Roster.getDefault().addPropertyChangeListener(new PropertyChangeListener());
}
return _tree;
}
Aggregations