package com.bftcom.fdt.ui.components; import com.bftcom.fdt.ui.IconFactory; import com.bftcom.fdt.ui.components.base.Identifier; import com.bftcom.fdt.ui.components.base.VisualComponent; import java.beans.PropertyChangeEvent; import com.bftcom.fdt.ui.components.base.VisualComponentHelper; import javax.swing.JComponent; /** Кнопка вызова справочника. * * @pdOid 1b055cf9-077d-42c6-926d-3ce2f5d20571 */ public class LookupButton extends javax.swing.JButton { private final static long serialVersionUID = -1; private boolean fieldComponentsNotEditable; /** Возвращает ссылку на источник событий об изменении видимости. * * @return Ссылка на источник событий об изменении видимости. * @pdOid d2ada110-cfc2-4218-9b8d-888584aba68e */ public JComponent getReadabilitySource() { return readabilitySource; } /** Устанавливает ссылку на источник событий об изменении видимости. * * @param newReadabilitySource Ссылка на источник событий об изменении видимости. * @pdOid cff3d37e-e3e8-40eb-8865-e32eaed02966 */ public void setReadabilitySource(JComponent newReadabilitySource) { // Если listener не равно null, то была установлена подписка на события и // следует аннулировать ее. if (listener != null) { removeSubscription(); } // Присвоить новое значение readabilitySource. readabilitySource = newReadabilitySource; // Если оно равно null, то выйти. if (readabilitySource == null) { return; } // Создать обработчик событий и присвоить ссылку на него переменной listener. listener = new ReadabilityChangeListener(); // Установить подписку на события изменения видимости. readabilitySource.addPropertyChangeListener(VisualComponentHelper.READABILITY, listener); } /** @pdOid 1337d5a2-bc7e-4ad3-9f2d-62e2f067e305 */ @Override public void removeNotify() { removeSubscription(); } /** Ссылка на источник событий об изменении видимости для данной кнопки. * * @pdOid b5a01c1e-85cc-4480-9383-d53e361a3cd2 */ private JComponent readabilitySource; /** Ссылка на обработчик событий изменения видимости. * * @pdOid 68a76ec4-83b7-4a67-8538-edff587b88a4 */ private LookupButton.ReadabilityChangeListener listener; /** * Аннулирует подписку на источник событий об изменении видимости. */ private void removeSubscription() { if (readabilitySource != null) { readabilitySource.removePropertyChangeListener(VisualComponentHelper.READABILITY, listener); readabilitySource = null; } } /** Обработчик событий изменения видимости. * * @pdOid 9e28d112-6ad6-41a0-b536-bbd7e4f9fcab */ class ReadabilityChangeListener implements java.beans.PropertyChangeListener { /** @param event * @pdOid 43647d55-9d0e-4d5c-bf62-8648126dfdf5 */ @Override public void propertyChange(PropertyChangeEvent event) { // Вызвать метод setVisible, передав ему новое значение свойства. (LookupButton.this).setVisible((Boolean) event.getNewValue()); } } private Identifier documentFieldId; public Identifier getDocumentFieldId() { return this.documentFieldId; } public void setDocumentFieldId(Identifier newdocumentFieldId) { this.documentFieldId = newdocumentFieldId; } public LookupButton() { super(IconFactory.getInstance().getButtonIcon(IconFactory.Icon.Lookup)); } @Override public void setText(String text) { } private VisualComponent[] dependentComponents; public VisualComponent[] getDependentComponents() { return this.dependentComponents; } public void setDependentComponents(VisualComponent[] newdependentComponents) { this.dependentComponents = newdependentComponents; } public VisualComponent getDependentComponents(int index) { return this.dependentComponents[index]; } public void setDependentComponents(int index, VisualComponent newdependentComponents) { this.dependentComponents[index] = newdependentComponents; } }