class BooleanArgument(Argument): def __init__(self): Argument.__init__(self, [Block.BOOLEAN_BLOCK]) self.height = 20 self.width = 15 drawBooleanArgument(self) self.addInput() self.resize() def addInput(self): self.input = TextBox() self.input.setWidth(20) self.input.addInputListener(self) self.append(self.input) DOM.setBooleanAttribute(self.input.getElement(), "readOnly", True) self.input.addChangeListener(self) def onChange(self, sender): from edu.uca.util.Serializable import stateChange stateChange() def onInput(self, sender): if len(self.input.getText()) == 0: self.input.setWidth( 20) # nao esta usando pois nao pode digitar no input bool else: self.input.setWidth(20 + ((len(self.input.getText()) - 1) * 7)) self.width = self.input.getWidth() self.resize() def resize(self): c = math.ceil(self.height / 2 + 1) self.tr.setStyleAttribute({ 'right': -c - 2, 'width': c + 3, 'height': c }) self.br.setStyleAttribute({ 'right': -c - 2, 'width': c + 3, 'height': c }) self.tl.setStyleAttribute({ 'left': -c - 2, 'width': c + 3, 'height': c }) self.bl.setStyleAttribute({ 'left': -c - 2, 'width': c + 3, 'height': c }) self.setStyleAttribute({'width': self.width}) self.t.setWidth(self.width) self.b.setWidth(self.width)
class InputControl(Control): def __init__(self, min_value, max_value, start_value=None, step=None, **kwargs): if not kwargs.has_key("StyleName"): kwargs['StyleName'] = "gwt-InputControl" self.input = TextBox() self.input.addKeyboardListener(self) #element = DOM.createDiv() if kwargs.has_key('Element'): # XXX FIXME: unlikely to work! element = kwargs.pop('Element') else: element = self.input.getElement() # YUK!!! Control.__init__(self, element, min_value, max_value, start_value, step, **kwargs) self.addClickListener(self) self.addFocusListener(self) self.addKeyboardListener(self) def onFocus(self, sender): self.addStyleName("gwt-InputControl-focussed") def onLostFocus(self, sender): self.removeStyleName("gwt-InputControl-focussed") def setControlPos(self, value): self.input.setText(value) def onKeyPress(self, sender, keycode, modifiers): if keycode == KeyboardListener.KEY_ENTER: DOM.eventPreventDefault(DOM.eventGetCurrentEvent()) txt = self.input.getText() if not txt: return new_value = float(txt) new_value = self.processValue(new_value) self.setControlPos(new_value) self.setValue(new_value) else: Control.onKeyPress(self, sender, keycode, modifiers)