package org.geogebra.desktop.gui.properties; import java.awt.Component; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import org.geogebra.common.gui.SetLabels; import org.geogebra.common.gui.UpdateFonts; import org.geogebra.common.gui.dialog.options.model.AnimationStepModel; import org.geogebra.common.gui.dialog.options.model.ITextFieldListener; import org.geogebra.common.kernel.Kernel; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.desktop.gui.AngleTextField; import org.geogebra.desktop.main.AppD; /** * panel for animation step * * @author Markus Hohenwarter */ public class AnimationStepPanel extends JPanel implements ActionListener, FocusListener, UpdateablePropertiesPanel, SetLabels, UpdateFonts, ITextFieldListener { private static final long serialVersionUID = 1L; private AnimationStepModel model; private JLabel label; private AngleTextField tfAnimStep; private Kernel kernel; public AnimationStepPanel(AppD app) { kernel = app.getKernel(); model = new AnimationStepModel(this, app); // text field for animation step label = new JLabel(); tfAnimStep = new AngleTextField(6, app); label.setLabelFor(tfAnimStep); tfAnimStep.addActionListener(this); tfAnimStep.addFocusListener(this); // put it all together JPanel animPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); animPanel.add(label); animPanel.add(tfAnimStep); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); animPanel.setAlignmentX(Component.LEFT_ALIGNMENT); add(animPanel); setLabels(); } @Override public void setLabels() { label.setText(kernel.getLocalization().getMenu("AnimationStep") + ": "); } public void setPartOfSliderPanel() { model.setPartOfSlider(true); } @Override public JPanel updatePanel(Object[] geos) { model.setGeos(geos); if (!model.checkGeos()) { return null; } tfAnimStep.removeActionListener(this); model.updateProperties(); tfAnimStep.addActionListener(this); return this; } /** * handle textfield changes */ @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == tfAnimStep) { doActionPerformed(); } } private void doActionPerformed() { model.applyChanges(tfAnimStep.getText()); updatePanel(model.getGeos()); } @Override public void focusGained(FocusEvent arg0) { // only handle focus lost } @Override public void focusLost(FocusEvent e) { doActionPerformed(); } @Override public void updateFonts() { Font font = ((AppD) kernel.getApplication()).getPlainFont(); label.setFont(font); tfAnimStep.setFont(font); } @Override public void updateVisualStyle(GeoElement geo) { // TODO Auto-generated method stub } @Override public void setText(String text) { tfAnimStep.setText(text); } }