/* * Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> * Licensed under the Apache License, Version 2.0 (the "License") * $Id: ElementPropertyEditor.java 3918 2008-04-14 17:35:35Z gbevin $ */ package com.uwyn.rife.gui.old; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.*; import com.uwyn.rife.gui.Rife; import com.uwyn.rife.swing.JDialogError; import com.uwyn.rife.swing.MouseMotionEventTranslator; import com.uwyn.rife.swing.documents.CharFilterDocument; import com.uwyn.rife.tools.Localization; class ElementPropertyEditor extends JTextField implements KeyListener, ActionListener { private ElementProperty mElementProperty = null; private Rectangle mEditRectangle = null; ElementPropertyEditor(ElementProperty elementProperty, Point referencePoint) { super(new CharFilterDocument(ElementProperty.VALID_CHARS, CharFilterDocument.VALID, ElementStyle.MAX_PROPERTY_STRING_LENGTH), elementProperty.getName(), 0); mElementProperty = elementProperty; mEditRectangle = mElementProperty.getEditRectangle(referencePoint); mElementProperty.getElement().add(ElementPropertyEditor.this); mElementProperty.getElement().getStructurePanel().elementPropertyHighlighted(mElementProperty); setBorder(null); setFont(mElementProperty.getEditFont()); setHorizontalAlignment(mElementProperty.getEditAlignment()); setBounds((int)mEditRectangle.getX(), (int)mEditRectangle.getY(), (int)mEditRectangle.getWidth(), (int)mEditRectangle.getHeight()); setVisible(true); requestFocus(); addActionListener(this); addKeyListener(this); addMouseMotionListener(new MouseMotionEventTranslator(getElementProperty().getElement())); } ElementProperty getElementProperty() { return mElementProperty; } void destroy() { removeKeyListener(this); removeActionListener(this); Element element = mElementProperty.getElement(); element.remove(this); if(mElementProperty.getName().length() == 0) { element.removeProperty(mElementProperty); } element.repaint(); } public void keyTyped(KeyEvent e) { } public void keyPressed(KeyEvent e) { } public void keyReleased(KeyEvent e) { if(e.getKeyCode() == KeyEvent.VK_ESCAPE) { Element element = mElementProperty.getElement(); element.getStructurePanel().removeElementPropertyEditor(); } } public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if(source == this) { if(getText().length() == 0) { JDialogError dialog = new JDialogError(Rife.getMainFrame(), "rife.dialog.emptyelementproperty.title", Localization.getString("rife.dialog.emptyelementproperty.message")); dialog.setVisible(true); } else { Element element = mElementProperty.getElement(); if(element.renameProperty(mElementProperty, getText())) { element.getStructurePanel().removeElementPropertyEditor(); element.resetPrecalculatedAreas(); } else { JDialogError dialog = mElementProperty.getUnicityErrorDialog(); dialog.setVisible(true); } } } } }