/** * Set the BoxPanelVisible property. * * @param value The new value for BoxPanelVisible */ public void setBoxPanelVisible(boolean value) { boxPanelVisible = value; if (boxPanel != null) { if (boxPanel.isVisible() != boxPanelVisible) { boxPanel.setVisible(boxPanelVisible); if (boxPanel.getParent() != null) { boxPanel.getParent().doLayout(); } } } }
/** * Update the state of the box panel with the animation set * * @param timesArray Array of times in set */ private void updateBoxPanel(DateTime[] timesArray) { if (boxPanel != null) { boxPanel.setNumTimes(timesArray.length); if (anime != null) { boxPanel.setOnIndex(anime.getCurrent()); } if (propertiesDialog != null) { propertiesDialog.boxPanel.applyProperties(this.boxPanel); } } }
/** * Apply the info from the dialog * * @param info The info * @param andShare Share the state with other widgets */ protected void applyProperties(AnimationInfo info, boolean andShare) { if (boxPanel != null) { boxPanel.applyProperties(propertiesDialog.boxPanel); } setProperties(info); if (andShare) { doShare(CMD_PROPS, info); } }
/** * Make and show an AnimationPropertiesDialog; if that returns animationInfo ok, set the new * animationInfo data into the the Animations. */ protected void showPropertiesDialog() { if (propertiesDialog == null) { AnimationBoxPanel propertiesBoxPanel = new AnimationBoxPanel(null, boxPanel.getStepsOk()); propertiesDialog = new AnimationPropertiesDialog(this, GuiUtils.getFrame(getContents()), propertiesBoxPanel); animationInfo.shared = getSharing(); animationInfo.boxesVisible = getBoxPanelVisible(); propertiesDialog.setInfo(animationInfo); } propertiesDialog.boxPanel.applyProperties(boxPanel); propertiesDialog.show(); }
/** * Make the UI for this widget. * * @param floatToolBar true if the toolbar should be floatable * @return UI as a Component */ private JComponent doMakeContents(boolean floatToolBar) { String imgp = "/auxdata/ui/icons/"; KeyListener listener = new KeyAdapter() { public void keyPressed(KeyEvent e) { if ((e.getSource() instanceof JComboBox)) { return; } int code = e.getKeyCode(); char c = e.getKeyChar(); if ((code == KeyEvent.VK_RIGHT) || (code == KeyEvent.VK_KP_RIGHT)) { if (e.isShiftDown()) { gotoIndex(anime.getNumSteps() - 1); } else { actionPerformed(CMD_FORWARD); } } else if ((code == KeyEvent.VK_LEFT) || (code == KeyEvent.VK_KP_LEFT)) { if (e.isShiftDown()) { gotoIndex(0); } else { actionPerformed(CMD_BACKWARD); } } else if (code == KeyEvent.VK_ENTER) { actionPerformed(CMD_STARTSTOP); } else if ((code == KeyEvent.VK_P) && e.isControlDown()) { actionPerformed(CMD_PROPS); } else if (Character.isDigit(c)) { int step = new Integer("" + c).intValue() - 1; if (step < 0) { step = 0; } if (step >= anime.getNumSteps()) { step = anime.getNumSteps() - 1; } gotoIndex(step); } } }; List buttonList = new ArrayList(); buttonList.add(timesCbx); // Update the list of times setTimesInTimesBox(); Dimension preferredSize = timesCbx.getPreferredSize(); if (preferredSize != null) { int height = preferredSize.height; if (height < 50) { JComponent filler = GuiUtils.filler(3, height); buttonList.add(filler); } } String[][] buttonInfo = { {"Go to first frame", CMD_BEGINNING, getIcon("Rewind")}, {"One frame back", CMD_BACKWARD, getIcon("StepBack")}, {"Run/Stop", CMD_STARTSTOP, getIcon("Play")}, {"One frame forward", CMD_FORWARD, getIcon("StepForward")}, {"Go to last frame", CMD_END, getIcon("FastForward")}, {"Properties", CMD_PROPS, getIcon("Information")} }; for (int i = 0; i < buttonInfo.length; i++) { JButton btn = GuiUtils.getScaledImageButton(buttonInfo[i][2], getClass(), 2, 2); btn.setToolTipText(buttonInfo[i][0]); btn.setActionCommand(buttonInfo[i][1]); btn.addActionListener(this); btn.addKeyListener(listener); // JComponent wrapper = GuiUtils.center(btn); // wrapper.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); btn.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); buttonList.add(btn); // buttonList.add(wrapper); if (i == 2) { startStopBtn = btn; } } JComponent contents = GuiUtils.hflow(buttonList, 1, 0); if (boxPanel == null) { boxPanel = new AnimationBoxPanel(this); if (timesArray != null) { updateBoxPanel(timesArray); } } boxPanel.addKeyListener(listener); if (!getBoxPanelVisible()) { boxPanel.setVisible(false); } contents = GuiUtils.doLayout(new Component[] {boxPanel, contents}, 1, GuiUtils.WT_Y, GuiUtils.WT_N); // GuiUtils.addKeyListenerRecurse(listener,contents); if (floatToolBar) { JToolBar toolbar = new JToolBar(JToolBar.HORIZONTAL); toolbar.setFloatable(true); contents = GuiUtils.left(contents); toolbar.add(contents); contents = toolbar; } updateRunButton(); madeContents = true; return contents; }