001package jmri.jmrix.dccpp.swing.virtuallcd; 002 003import java.awt.event.ActionEvent; 004 005import javax.annotation.Nonnull; 006import javax.swing.AbstractAction; 007import javax.swing.JPopupMenu; 008 009import jmri.jmrit.display.*; 010 011/** 012 * A VirtualLCD that can be put on a panel. 013 * 014 * @author Daniel Bergqvist (C) 2026 015 */ 016public class VirtualLcdPositionable extends PositionableJComponent { 017 018 private final VirtualLCDPanel virtualLCDPanel; 019 020 public VirtualLcdPositionable(Editor editor) { 021 super(editor); 022 virtualLCDPanel = new VirtualLCDPanel(editor, this, true); 023 } 024 025 public void initComponents() { 026 virtualLCDPanel.initComponents(); 027 this.setSize(100,20); 028 virtualLCDPanel.setSize(100,20); 029 add(virtualLCDPanel); 030 } 031 032 @Override 033 public Positionable deepClone() { 034 VirtualLcdPositionable pos = new VirtualLcdPositionable(_editor); 035 pos.virtualLCDPanel.setMemo(virtualLCDPanel.getMemo()); 036 pos.virtualLCDPanel.setDisplayConfig(virtualLCDPanel.getDisplayConfig()); 037 pos.virtualLCDPanel.setDisplayNo(virtualLCDPanel.getDisplayNo()); 038 pos.virtualLCDPanel.setMinDisplayNo(virtualLCDPanel.getMinDisplayNo()); 039 pos.virtualLCDPanel.setMaxDisplayNo(virtualLCDPanel.getMaxDisplayNo()); 040 pos.virtualLCDPanel.setSelectedDisplays(virtualLCDPanel.getSelectedDisplays()); 041 pos.initComponents(); 042 return finishClone(pos); 043 } 044/* 045 protected Positionable finishClone(AnalogClock2Display pos) { 046 return super.finishClone(pos); 047 } 048*/ 049 public VirtualLCDPanel getVirtualLCDPanel() { 050 return virtualLCDPanel; 051 } 052 053 /** 054 * Pop-up just displays the sensor name. 055 * 056 * @param popup the menu to display 057 * @return always true 058 */ 059 @Override 060 public boolean showPopUp(JPopupMenu popup) { 061 if (isEditable()) { 062 popup.add(new AbstractAction(Bundle.getMessage("EditVirtualLCD")) { 063 @Override 064 public void actionPerformed(ActionEvent e) { 065 ConfigureVirtualLCD.editConfigureVirtualLCD( 066 getEditor(), virtualLCDPanel); 067 } 068 }); 069 } 070 return true; 071 } 072 073 @Override 074 @Nonnull 075 public String getTypeString() { 076 return Bundle.getMessage("PositionableType_VirtualLcd"); 077 } 078 079 @Override 080 public String getNameString() { 081 return virtualLCDPanel.getNameString(); 082 } 083 084 public void dispose() { 085 virtualLCDPanel.dispose(); 086 } 087 088}