def testJSlider(self): slider = JSlider(0, 10, 5) self.group.bind(slider, 'value', self.dummy, 'value') assert self.dummy.value == 5 slider.setValue(3) assert self.dummy.value == 3
def main(): activeLayers=getActiveLayers() if len(activeLayers)==0: JOptionPane.showMessageDialog(None, "Add and activate at least one vector layer in the view. Retry!", "Batch Transparency", JOptionPane.WARNING_MESSAGE) return else: numFLyrVect=0 for i in range(len(activeLayers)): if activeLayers[i].getClass().getCanonicalName()=="com.iver.cit.gvsig.fmap.layers.FLyrVect": numFLyrVect=numFLyrVect+1 if numFLyrVect==0: JOptionPane.showMessageDialog(None, "You have to add and activate at least one vector layer in the view. Retry!", "Batch Transparency", JOptionPane.WARNING_MESSAGE) return else: global frame, outCheckbox, fillCheckbox, slider frame = JFrame("Batch Transparency", defaultCloseOperation=JFrame.DISPOSE_ON_CLOSE, bounds=(100, 100, 450, 80), layout=FlowLayout(), resizable=0) outCheckbox = JCheckBox("outline", 1) fillCheckbox = JCheckBox("fill", 1) # Create a horizontal slider with min=0, max=100, value=50 slider = JSlider() slider.setPreferredSize(Dimension(200, 50)) slider.setValue(100) slider.setMajorTickSpacing(25) slider.setMinorTickSpacing(5) slider.setPaintTicks(1) slider.setPaintLabels(1) applyButton = JButton("Apply", actionPerformed=action) acceptButton = JButton("Accept", actionPerformed=accept) frame.add(outCheckbox) frame.add(fillCheckbox) frame.add(slider) frame.add(applyButton) frame.add(acceptButton) frame.show() return
def getGUI(sym_dict): global frame, outCheckbox, fillCheckbox, slider, colorTF, widthTF frame = JFrame("Border Symbology", defaultCloseOperation=JFrame.DISPOSE_ON_CLOSE, bounds=(100, 100, 450, 200), layout=FlowLayout(), resizable=0) colorL = JLabel('Color: ') colorTF = JTextField(20) color = sym_dict["color"] color = Color(color.getRed(), color.getGreen(), color.getBlue(), sym_dict["alpha"]) colorTF.setBackground(color) colorTF.setText(color.toString()) colorB = JButton('...', actionPerformed=colorChooser) frame.add(colorL) frame.add(colorTF) frame.add(colorB) widthL = JLabel('Width: ') widthTF = JTextField(3) widthTF.setText(str(sym_dict["width"])) frame.add(widthL) frame.add(widthTF) alphaL = JLabel('Transparency: ') frame.add(alphaL) # Create a horizontal slider with min=0, max=100, value=50 slider = JSlider() slider.setPreferredSize(Dimension(200, 50)) slider.setValue(sym_dict["alpha"]*100/255) slider.setMajorTickSpacing(25) slider.setMinorTickSpacing(5) slider.setPaintTicks(1) slider.setPaintLabels(1) applyButton = JButton("Apply", actionPerformed=action) acceptButton = JButton("Accept", actionPerformed=accept) frame.add(slider) frame.add(applyButton) frame.add(acceptButton) frame.show()
class DebugControlPanel(JPanel): BUTTON_SIZE = (50, 50) def __init__(self, interpreter, debugger, debugPanel): self.interpreter = interpreter self.debugger = debugger self.debugPanel = debugPanel # Build our slider! self.slider = JSlider(JSlider.HORIZONTAL, debugger.MIN_SPEED, debugger.MAX_SPEED, debugger.speed, stateChanged=self._sliderSpeedChanged ) # Label the slider! self.sliderLabels = labels = Hashtable() labels.put(debugger.MIN_SPEED, JLabel("Slow")) labels.put(debugger.MAX_SPEED, JLabel("Fast")) self.slider.labelTable = labels self.slider.paintLabels = True # Build some buttons! self.buttonInsets = Insets(0, 0, 0, 0) self.watchButton = self.makeDebuggerButton( self.debugPanel.watchVariable, 'images/plus.jpg' ) self.unwatchButton = self.makeDebuggerButton( self.debugPanel.unwatchVariable, 'images/minus.jpg' ) self.fullspeedButton = self.makeDebuggerButton( self.debugPanel.fullSpeed, 'images/fullspeed.jpg' ) self.stopButton = self.makeDebuggerButton( self.interpreter.stopAction, 'images/stop.jpg' ) # Display them all! self.setLayout(BoxLayout(self, BoxLayout.X_AXIS)) self.add(self.slider) self.add(self.watchButton) self.add(self.unwatchButton) self.add(self.fullspeedButton) self.add(self.stopButton) # Connect the slider to the debugger! self.debugger.onSpeedSet.connect(self._showSpeedSetting) self.debugger.onStart.connect(self._lockControls) self.debugger.onStop.connect(self._unlockControls) def makeDebuggerButton(self, action, icon): imageIcon = JESResources.makeIcon(icon) return JButton(action, text=None, icon=imageIcon, margin=self.buttonInsets) @threadsafe def _sliderSpeedChanged(self, event): # These two event listeners could hypothetically go into # mutual recursion. To keep them from doing so, neither of them # trigger the other event unless the value actually changed. # This ensures they stop recursing after a single round. value = self.slider.getValue() if self.debugger.speed != value: self.debugger.setSpeed(value) @threadsafe def _showSpeedSetting(self, debugger, newSpeed, **_): if self.slider.getValue() != newSpeed: self.slider.setValue(newSpeed) @threadsafe def _lockControls(self, debugger, **_): self.debugPanel.watchVariable.enabled = False self.debugPanel.unwatchVariable.enabled = False self.debugPanel.fullSpeed.enabled = True @threadsafe def _unlockControls(self, debugger, **_): self.debugPanel.watchVariable.enabled = True self.debugPanel.unwatchVariable.enabled = True self.debugPanel.fullSpeed.enabled = False
class SliderListener(ChangeListener): def __init__(self, view): self.view = view def stateChanged(self, evt): s = evt.getSource() self.view.update(s.getValue()) frame = JFrame("Mesh taken from " + xmlDir + "* directories") frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) canvas = MyView(xmlDir) frame.add(canvas, BorderLayout.CENTER) jSlider1 = JSlider() jSlider1.setValue(0) jSlider1.setMaximum(canvas.getMaxIndex()) jSlider1.setPaintLabels(True) jSlider1.addChangeListener(SliderListener(canvas)) frame.add(jSlider1, BorderLayout.SOUTH) frame.setSize(800, 600) frame.setVisible(True) class MyKeyListener(KeyListener): def __init__(self, view, slider): self.view = view self.slider = slider def keyTyped(self, e):
class DebugControlPanel(JPanel): BUTTON_SIZE = (50, 50) def __init__(self, interpreter, debugger, debugPanel): self.interpreter = interpreter self.debugger = debugger self.debugPanel = debugPanel # Build our slider! self.slider = JSlider(JSlider.HORIZONTAL, debugger.MIN_SPEED, debugger.MAX_SPEED, debugger.speed, stateChanged=self._sliderSpeedChanged) # Label the slider! self.sliderLabels = labels = Hashtable() labels.put(debugger.MIN_SPEED, JLabel("Slow")) labels.put(debugger.MAX_SPEED, JLabel("Fast")) self.slider.labelTable = labels self.slider.paintLabels = True # Build some buttons! self.buttonInsets = Insets(0, 0, 0, 0) self.watchButton = self.makeDebuggerButton( self.debugPanel.watchVariable, 'images/plus.jpg') self.unwatchButton = self.makeDebuggerButton( self.debugPanel.unwatchVariable, 'images/minus.jpg') self.fullspeedButton = self.makeDebuggerButton( self.debugPanel.fullSpeed, 'images/fullspeed.jpg') self.stopButton = self.makeDebuggerButton(self.interpreter.stopAction, 'images/stop.jpg') # Display them all! self.setLayout(BoxLayout(self, BoxLayout.X_AXIS)) self.add(self.slider) self.add(self.watchButton) self.add(self.unwatchButton) self.add(self.fullspeedButton) self.add(self.stopButton) # Connect the slider to the debugger! self.debugger.onSpeedSet.connect(self._showSpeedSetting) self.debugger.onStart.connect(self._lockControls) self.debugger.onStop.connect(self._unlockControls) def makeDebuggerButton(self, action, icon): imageIcon = JESResources.makeIcon(icon) return JButton(action, text=None, icon=imageIcon, margin=self.buttonInsets) @threadsafe def _sliderSpeedChanged(self, event): # These two event listeners could hypothetically go into # mutual recursion. To keep them from doing so, neither of them # trigger the other event unless the value actually changed. # This ensures they stop recursing after a single round. value = self.slider.getValue() if self.debugger.speed != value: self.debugger.setSpeed(value) @threadsafe def _showSpeedSetting(self, debugger, newSpeed, **_): if self.slider.getValue() != newSpeed: self.slider.setValue(newSpeed) @threadsafe def _lockControls(self, debugger, **_): self.debugPanel.watchVariable.enabled = False self.debugPanel.unwatchVariable.enabled = False self.debugPanel.fullSpeed.enabled = True @threadsafe def _unlockControls(self, debugger, **_): self.debugPanel.watchVariable.enabled = True self.debugPanel.unwatchVariable.enabled = True self.debugPanel.fullSpeed.enabled = False
return index class SliderListener(ChangeListener): def __init__(self, view): self.view = view def stateChanged(self, evt): s = evt.getSource() self.view.update(s.getValue()) frame = JFrame("Mesh taken from "+xmlDir+"* directories") frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) canvas = MyView(xmlDir) frame.add(canvas, BorderLayout.CENTER) jSlider1 = JSlider() jSlider1.setValue(0) jSlider1.setMaximum(canvas.getMaxIndex()) jSlider1.setPaintLabels(True) jSlider1.addChangeListener(SliderListener(canvas)) frame.add(jSlider1, BorderLayout.SOUTH) frame.setSize(800,600) frame.setVisible(True) class MyKeyListener(KeyListener): def __init__(self, view, slider): self.view = view self.slider = slider def keyTyped(self, e): pass def keyReleased(self, e):
class TimeControl(JPanel, ChangeListener, ActionListener): def __init__(self, view): JPanel.__init__(self) self.view = view self.background = Color.white self.config_panel_height = 60 mainPanel = JPanel(background=self.background, layout=BorderLayout()) mainPanel.border = self.RoundedBorder() configPanel = JPanel(background=self.background, visible=False) self.layout = BorderLayout() self.add(mainPanel, BorderLayout.NORTH) self.add(configPanel, BorderLayout.SOUTH) self.config_button = JButton(Icon.arrowdown, rolloverIcon=ShadedIcon.arrowdown, toolTipText='configure', actionPerformed=self.configure, borderPainted=False, focusPainted=False, contentAreaFilled=False) self.add(self.config_button) self.configPanel = configPanel self.slider = JSlider(0, 1, 0, background=self.background) self.slider.snapToTicks = True mainPanel.add(self.slider) self.slider.addChangeListener(self) self.min_time = JLabel(' 0.0000 ', opaque=True, background=self.background) self.max_time = JLabel(' 0.0000 ', opaque=True, background=self.background) self.left_panel = JPanel(background=self.background) self.left_panel.add(JButton(Icon.restart, rolloverIcon=ShadedIcon.restart, toolTipText='restart', actionPerformed=self.start, borderPainted=False, focusPainted=False, contentAreaFilled=False)) self.left_panel.add(self.min_time) self.left_panel.add(JButton(icon=Icon.start, rolloverIcon=ShadedIcon.start, toolTipText='jump to beginning', actionPerformed=lambda x: self.slider.setValue(self.slider.minimum), borderPainted=False, focusPainted=False, contentAreaFilled=False)) self.right_panel = JPanel(background=self.background) self.right_panel.add(JButton(icon=Icon.end, rolloverIcon=ShadedIcon.end, toolTipText='jump to end', actionPerformed=lambda x: self.slider.setValue(self.slider.maximum), borderPainted=False, focusPainted=False, contentAreaFilled=False)) self.right_panel.add(self.max_time) self.playpause_button = JButton(Icon.play, actionPerformed=self.pause, rolloverIcon=ShadedIcon.play, toolTipText='continue', borderPainted=False, focusPainted=False, contentAreaFilled=False) self.right_panel.add(self.playpause_button) mainPanel.add(self.left_panel, BorderLayout.WEST) mainPanel.add(self.right_panel, BorderLayout.EAST) pdf = JPanel(layout=BorderLayout(), opaque=False) pdf.add(JButton(Icon.pdf, rolloverIcon=ShadedIcon.pdf, toolTipText='save pdf', actionPerformed=self.save_pdf, borderPainted=False, focusPainted=False, contentAreaFilled=False)) pdf.add(JLabel('pdf', horizontalAlignment=javax.swing.SwingConstants.CENTER), BorderLayout.NORTH) pdf.maximumSize = pdf.preferredSize configPanel.add(pdf) self.data = JPanel(layout=BorderLayout(), opaque=False) self.data.add(JButton(Icon.data, rolloverIcon=ShadedIcon.data, toolTipText='examine data', actionPerformed=self.show_data, borderPainted=False, focusPainted=False, contentAreaFilled=False)) self.data.add(JLabel('data', horizontalAlignment=javax.swing.SwingConstants.CENTER), BorderLayout.NORTH) self.data.maximumSize = self.data.preferredSize configPanel.add(self.data) mode = JPanel(layout=BorderLayout(), opaque=False) cb = JComboBox(['default', 'rate', 'direct']) if self.view.network.mode in [SimulationMode.DEFAULT, SimulationMode.PRECISE]: cb.setSelectedIndex(0) elif self.view.network.mode in [SimulationMode.RATE]: cb.setSelectedIndex(1) elif self.view.network.mode in [SimulationMode.DIRECT, SimulationMode.APPROXIMATE]: cb.setSelectedIndex(2) cb.addActionListener(self) self.mode_combobox = cb mode.add(cb) mode.add(JLabel('mode'), BorderLayout.NORTH) mode.maximumSize = mode.preferredSize configPanel.add(mode) dt = JPanel(layout=BorderLayout(), opaque=False) cb = JComboBox(['0.001', '0.0005', '0.0002', '0.0001']) cb.setSelectedIndex(0) self.view.dt = float(cb.getSelectedItem()) cb.addActionListener(self) self.dt_combobox = cb dt.add(cb) dt.add(JLabel('time step'), BorderLayout.NORTH) dt.maximumSize = dt.preferredSize configPanel.add(dt) rate = JPanel(layout=BorderLayout(), opaque=False) self.rate_combobox = JComboBox(['fastest', '1x', '0.5x', '0.2x', '0.1x', '0.05x', '0.02x', '0.01x', '0.005x', '0.002x', '0.001x']) self.rate_combobox.setSelectedIndex(4) self.view.set_target_rate(self.rate_combobox.getSelectedItem()) self.rate_combobox.addActionListener(self) rate.add(self.rate_combobox) rate.add(JLabel('speed'), BorderLayout.NORTH) rate.maximumSize = rate.preferredSize configPanel.add(rate) spin1 = JPanel(layout=BorderLayout(), opaque=False) self.record_time_spinner = JSpinner(SpinnerNumberModel((self.view.timelog.tick_limit - 1) * self.view.dt, 0.1, 100, 1), stateChanged=self.tick_limit) spin1.add(self.record_time_spinner) spin1.add(JLabel('recording time'), BorderLayout.NORTH) spin1.maximumSize = spin1.preferredSize configPanel.add(spin1) spin2 = JPanel(layout=BorderLayout(), opaque=False) self.filter_spinner = JSpinner(SpinnerNumberModel(self.view.tau_filter, 0, 0.5, 0.01), stateChanged=self.tau_filter) spin2.add(self.filter_spinner) spin2.add(JLabel('filter'), BorderLayout.NORTH) spin2.maximumSize = spin2.preferredSize configPanel.add(spin2) spin3 = JPanel(layout=BorderLayout(), opaque=False) self.time_shown_spinner = JSpinner(SpinnerNumberModel(self.view.time_shown, 0.01, 50, 0.1), stateChanged=self.time_shown) spin3.add(self.time_shown_spinner) spin3.add(JLabel('time shown'), BorderLayout.NORTH) spin3.maximumSize = spin3.preferredSize configPanel.add(spin3) spin4 = JPanel(layout=BorderLayout(), opaque=False) self.freq_spinner = JSpinner(SpinnerNumberModel(1000.0/self.view.data_update_period, 1, 50, 1), stateChanged=self.update_frequency) spin4.add(self.freq_spinner) spin4.add(JLabel('freq (Hz)'), BorderLayout.NORTH) spin4.maximumSize = spin4.preferredSize configPanel.add(spin4) layout = JPanel(layout=BorderLayout(), opaque=False) layout.add(JButton(icon=Icon.save, rolloverIcon=ShadedIcon.save, actionPerformed=self.save, borderPainted=False, focusPainted=False, contentAreaFilled=False, margin=java.awt.Insets(0, 0, 0, 0), toolTipText='save layout'), BorderLayout.WEST) layout.add(JButton(icon=Icon.restore, rolloverIcon=ShadedIcon.restore, actionPerformed=self.restore, borderPainted=False, focusPainted=False, contentAreaFilled=False, margin=java.awt.Insets(0, 0, 0, 0), toolTipText='restore layout'), BorderLayout.EAST) layout.add(JLabel('layout', horizontalAlignment=javax.swing.SwingConstants.CENTER), BorderLayout.NORTH) layout.maximumSize = layout.preferredSize configPanel.add(layout) configPanel.setPreferredSize(java.awt.Dimension(20, self.config_panel_height)) configPanel.visible = False for c in [dt, rate, spin1, spin2, spin3]: c.border = javax.swing.border.EmptyBorder(0, 10, 0, 10) def show_data(self, event): frame = JFrame('%s Data' % self.view.network.name) frame.visible = True frame.add(timeview.data.DataPanel(self.view)) frame.size = (500, 600) def forward_one_frame(self, event): self.slider.setValue(self.slider.value + 1) def backward_one_frame(self, event): self.slider.setValue(self.slider.value - 1) def set_max_time(self, maximum): self.slider.maximum = maximum self.max_time.text = ' %1.4f ' % (self.view.dt * maximum) def set_min_time(self, minimum): self.slider.minimum = minimum self.min_time.text = ' %1.4f ' % (self.view.dt * minimum) def stateChanged(self, event): self.view.current_tick = self.slider.value self.view.area.repaint() def start(self, event): self.view.restart = True def configure(self, event): view_state = self.view.frame.getExtendedState() if self.configPanel.visible: self.view.frame.setSize(self.view.frame.width, self.view.frame.height - self.config_panel_height) self.configPanel.visible = False self.config_button.icon = Icon.arrowdown self.config_button.rolloverIcon = ShadedIcon.arrowdown self.config_button.toolTipText = 'configure' else: if(view_state & self.view.frame.MAXIMIZED_BOTH == self.view.frame.MAXIMIZED_BOTH): self.view.frame.setSize(self.view.frame.width, self.view.frame.height) else: self.view.frame.setSize(self.view.frame.width, self.view.frame.height + self.config_panel_height) self.configPanel.visible = True self.config_button.icon = Icon.arrowup self.config_button.rolloverIcon = ShadedIcon.arrowup self.config_button.toolTipText = 'hide configuration' self.view.frame.setExtendedState(view_state) self.view.frame.layout.layoutContainer(self.view.frame) self.layout.layoutContainer(self) self.view.frame.layout.layoutContainer(self.view.frame) self.layout.layoutContainer(self) self.view.frame.layout.layoutContainer(self.view.frame) self.view.frame.repaint() def pause(self, event): self.view.paused = not self.view.paused if self.view.paused: self.playpause_button.icon = Icon.play self.playpause_button.rolloverIcon = ShadedIcon.play self.playpause_button.toolTipText = 'continue' else: self.playpause_button.icon = Icon.pause self.playpause_button.rolloverIcon = ShadedIcon.pause self.playpause_button.toolTipText = 'pause' def tau_filter(self, event): self.view.tau_filter = float(event.source.value) self.view.area.repaint() def time_shown(self, event): self.view.time_shown = float(event.source.value) self.view.area.repaint() def actionPerformed(self, event): dt = float(self.dt_combobox.getSelectedItem()) if dt != self.view.dt: self.view.dt = dt self.record_time_spinner.value = (self.view.timelog.tick_limit - 1) * self.view.dt self.dt_combobox.repaint() self.view.restart = True self.view.set_target_rate(self.rate_combobox.getSelectedItem()) if self.mode_combobox is not None: mode = self.mode_combobox.getSelectedItem() if mode == 'default': requested = SimulationMode.DEFAULT elif mode == 'rate': requested = SimulationMode.RATE elif mode == 'direct': requested = SimulationMode.DIRECT if requested != self.view.network.mode: self.view.requested_mode = requested def tick_limit(self, event): self.view.timelog.tick_limit = int(event.source.value / self.view.dt) + 1 def update_frequency(self, event): self.view.data_update_period = 1000.0 / event.source.value def save(self, event): self.view.save() def restore(self, event): self.view.restore() def save_pdf(self, event): from com.itextpdf.text.pdf import PdfWriter from com.itextpdf.text import Document fileChooser = JFileChooser() fileChooser.setSelectedFile(java.io.File('%s.pdf' % self.view.network.name)) if fileChooser.showSaveDialog(self) == JFileChooser.APPROVE_OPTION: f = fileChooser.getSelectedFile() doc = Document() writer = PdfWriter.getInstance(doc, java.io.FileOutputStream(f)) doc.open() cb = writer.getDirectContent() w = self.view.area.size.width h = self.view.area.size.height pw = 550 ph = 800 tp = cb.createTemplate(pw, ph) g2 = tp.createGraphicsShapes(pw, ph) at = java.awt.geom.AffineTransform() s = min(float(pw) / w, float(ph) / h) at.scale(s, s) g2.transform(at) self.view.area.pdftemplate = tp, s self.view.area.paint(g2) self.view.area.pdftemplate = None g2.dispose() cb.addTemplate(tp, 20, 0) doc.close() class RoundedBorder(javax.swing.border.AbstractBorder): def __init__(self): self.color = Color(0.7, 0.7, 0.7) def getBorderInsets(self, component): return java.awt.Insets(5, 5, 5, 5) def paintBorder(self, c, g, x, y, width, height): g.color = self.color g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON) g.drawRoundRect(x, y, width - 1, height - 1, 10, 10)