Ejemplo n.º 1
0
class JTabTitle(JPanel, ActionListener):
    def __init__(self, ui, tabName):
        self._ui = ui

        self.jStatusBtn = JButton()
        #self.jStatusBtn.setMargin(Insets(2,0,2,0))

        self.jStatusBtn = JCheckBox()
        self.jStatusBtn.setToolTipText(Strings.jStatusBtn_tooltip)
        self.jStatusBtn.setMargin(Insets(1, 5, 1, 5))  #enlarged clickable zone
        self.jStatusBtn.setBackground(Color.RED)  #transparent background
        self.add(self.jStatusBtn)
        self.jStatusBtn.addActionListener(self)

        self.jLabel = JDoubleClickTextField(self, tabName)

        self.add(self.jLabel)
        self.setOpaque(False)

    def actionPerformed(self, event):
        #Check box was clicked
        if self.jStatusBtn == event.getSource():
            if self.jStatusBtn.isSelected():
                self._ui.initVars(self)
            pass  #do nothing for now

    def setTabName(self, tabName):
        self.jLabel.setText(tabName)

    def getTabName(self):
        return self.jLabel.getText()
Ejemplo n.º 2
0
class CustomCellRenderer(DefaultTreeCellRenderer):
    """Renders the various tree controls (checkbox, tristate checkbox, string values etc.)"""
    def __init__(self):
        DefaultTreeCellRenderer.__init__(self)

        flowLayout = FlowLayout(FlowLayout.LEFT, 0, 0)

        self.cbPanel = JPanel(flowLayout)
        self.cb = JCheckBox()
        self.cb.setBackground(None)
        self.cbPanel.add(self.cb)
        self.cbLabel = JLabel()
        self.cbPanel.add(self.cbLabel)

        self.tcbPanel = JPanel(flowLayout)
        self.tcb = TristateCheckBox()
        self.tcb.setBackground(None)
        self.tcbPanel.add(self.tcb)
        self.tcbLabel = JLabel()
        self.tcbPanel.add(self.tcbLabel)

        self.rbPanel = JPanel(flowLayout)
        self.rb = JRadioButton()
        self.rb.setBackground(None)
        self.rbPanel.add(self.rb)
        self.rbLabel = JLabel()
        self.rbPanel.add(self.rbLabel)

    def getTreeCellRendererComponent(self, tree, value, selected, expanded,
                                     leaf, row, hasFocus):
        """Return a swing control appropriate for the node type of the supplied value"""
        if isinstance(value, DefaultMutableTreeNode):
            nodeData = value.getUserObject()
            if isinstance(nodeData, TreeNodeData):
                t = nodeData.getNodeType()

                isEnabled = nodeData.getVisible() > 0

                # Boolean checkbox
                if t.isType([NodeType._bool]):
                    self.cbLabel.setText(nodeData.getText())
                    self.cb.setEnabled(isEnabled)
                    self.cbLabel.setEnabled(isEnabled)
                    if nodeData.getTriValue() == 0:
                        self.cb.setSelected(False)
                    else:
                        self.cb.setSelected(True)
                    control = self.cbPanel

                # Tristate chekcbox
                elif t.isType([NodeType._tri]):
                    control = self.tcbPanel
                    self.tcbLabel.setText(nodeData.getText())
                    self.tcb.setEnabled(isEnabled)
                    self.tcbLabel.setEnabled(isEnabled)
                    self.tcb.setTriState(nodeData.getTriValue())

                # Radio button
                elif t.isType([NodeType._radio]):
                    self.rbLabel.setText(nodeData.getText())
                    self.rb.setEnabled(isEnabled)
                    self.rbLabel.setEnabled(isEnabled)
                    if nodeData.getTriValue() == 0:
                        self.rb.setSelected(False)
                    else:
                        self.rb.setSelected(True)
                    control = self.rbPanel

                # Text field
                elif t.isType([NodeType._text]):
                    control = DefaultTreeCellRenderer.getTreeCellRendererComponent(
                        self, tree, value, selected, expanded, leaf, row,
                        hasFocus)
                    control.setText(nodeData.getText() + ": " +
                                    str(nodeData.getValue()))

                # Default tree cell (a node with an icon and a label)
                else:
                    control = DefaultTreeCellRenderer.getTreeCellRendererComponent(
                        self, tree, value, selected, expanded, leaf, row,
                        hasFocus)
                    control.setText(nodeData.getText())

                self.setColors(control, nodeData,
                               selected)  # Background color for the tree item

                # log.info("getTreeCellRendererComponent", t.getType(), isEnabled, "'" + nodeData.getText() + "'")

                control.setEnabled(isEnabled)
                return control

        # log.info("Warning: getTreeCellRendererComponent() fallthrough", nodeData)
        return DefaultTreeCellRenderer.getTreeCellRendererComponent(
            self, tree, value, selected, expanded, leaf, row, hasFocus)

    def setColors(self, control, data, selected):
        """Set background color fot the tree item."""
        if selected:
            control.setForeground(self.getTextSelectionColor())
            control.setBackground(self.getBackgroundSelectionColor())
        else:
            control.setForeground(self.getTextNonSelectionColor())
            control.setBackground(self.getBackgroundNonSelectionColor())