/**
* Copyright 2007 DFKI GmbH.
* All Rights Reserved. Use is subject to license terms.
*
* This file is part of MARY TTS.
*
* MARY TTS is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package marytts.tools.redstart;
import java.awt.Font;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
/**
*
* @author Mat Wilson <matwils@gmail.com>
*/
public class SpeakerWindow extends javax.swing.JFrame {
private boolean showPromptCount;
private Font defaultPromptFont;
/** Creates new form SpeakerWindow */
public SpeakerWindow() {
initComponents(); // Auto-generated in NetBeans
defaultPromptFont = jTextPane_PromptDisplay.getFont();
// Set icon image in upper left corner to the 16 x 16 pixel image
this.setIconImage(Toolkit.getDefaultToolkit().getImage(IconSet.LOGO_16x16_URL));
}
public void setShowPromptCount(boolean flag) {
showPromptCount = flag;
showOrHidePromptCount();
}
/**
* Updates the prompt display with the current prompt text
*
* @param text
* The current prompt text for the speaker to read
* @param nextSentence
* nextSentence
* @param redAlertMode
* redAlertMode
*/
public void updatePromptDisplay(String text, String nextSentence, boolean redAlertMode) {
jTextPane_PromptDisplay.setFont(defaultPromptFont);
LookAndFeel.centerPromptText(this.jTextPane_PromptDisplay, text, redAlertMode);
LookAndFeel.centerPromptText(this.jTextPane_nextSentence, nextSentence, redAlertMode);
}
/**
* Updates status icon in Speaker window
*
* @param statusIcon
* The icon to use (play, record, stop)
*/
public void updateSessionStatus(ImageIcon statusIcon) {
jLabel_SessionStatus.setText("");
jLabel_SessionStatus.setIcon(statusIcon);
}
public void showOrHidePromptCount() {
// Display accordingly
this.jProgressBar_SpeakerProgress.setVisible(showPromptCount);
this.jLabel_PromptCount.setVisible(showPromptCount);
this.jLabel_PromptTotal.setVisible(showPromptCount);
}
public void updatePromptCount(int promptCount) {
this.showOrHidePromptCount();
// Update the count
String countString = String.valueOf(promptCount);
jLabel_PromptCount.setText(countString);
}
public void updatePromptTotal(int promptTotal) {
String totalString = "/ " + String.valueOf(promptTotal);
jLabel_PromptTotal.setText(totalString);
}
public void setupProgressBar(int promptTotal) {
this.jProgressBar_SpeakerProgress.setMaximum(promptTotal);
this.updatePromptTotal(promptTotal);
}
public void updateProgressBar(int promptCount) {
this.jProgressBar_SpeakerProgress.setValue(promptCount);
}
/**
* This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The content of
* this method is always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel_SpeakerWindow = new javax.swing.JPanel();
jTextPane_PromptDisplay = new javax.swing.JTextPane();
jLabel_SessionStatus = new javax.swing.JLabel();
jProgressBar_SpeakerProgress = new javax.swing.JProgressBar();
jLabel_PromptCount = new javax.swing.JLabel();
jLabel_PromptTotal = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextPane_nextSentence = new javax.swing.JTextPane();
setTitle("Redstart - Speaker Window");
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
jTextPane_PromptDisplay.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jTextPane_PromptDisplay.setEditable(false);
jTextPane_PromptDisplay.setFont(new java.awt.Font("Tahoma", 0, 36));
jTextPane_PromptDisplay
.setText("This is a long and boring test sentence, the only purpose of which is to see how to break between lines without making any difference across the windows.");
jTextPane_PromptDisplay.setAutoscrolls(false);
jLabel_SessionStatus.setIcon(new javax.swing.ImageIcon(getClass()
.getResource("/marytts/tools/redstart/stopped_64x64.png")));
jProgressBar_SpeakerProgress.setFocusable(false);
jLabel_PromptCount.setFont(new java.awt.Font("Tahoma", 1, 24));
jLabel_PromptCount.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel_PromptCount.setText("1999");
jLabel_PromptCount.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jLabel_PromptCount.setPreferredSize(new java.awt.Dimension(64, 64));
jLabel_PromptTotal.setFont(new java.awt.Font("Tahoma", 1, 24));
jLabel_PromptTotal.setForeground(java.awt.Color.gray);
jLabel_PromptTotal.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel_PromptTotal.setText("/ 2012");
jLabel_PromptTotal.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT);
jLabel_PromptTotal.setPreferredSize(new java.awt.Dimension(64, 64));
jScrollPane1.setBorder(null);
jTextPane_nextSentence.setBackground(new java.awt.Color(245, 245, 245));
jTextPane_nextSentence.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jTextPane_nextSentence.setFont(new java.awt.Font("Tahoma", 0, 24));
jTextPane_nextSentence.setForeground(new java.awt.Color(50, 50, 50));
jTextPane_nextSentence
.setText("This is a long and boring test sentence, the only purpose of which is to see how to break between lines without making any difference across the windows.");
jScrollPane1.setViewportView(jTextPane_nextSentence);
org.jdesktop.layout.GroupLayout jPanel_SpeakerWindowLayout = new org.jdesktop.layout.GroupLayout(jPanel_SpeakerWindow);
jPanel_SpeakerWindow.setLayout(jPanel_SpeakerWindowLayout);
jPanel_SpeakerWindowLayout.setHorizontalGroup(jPanel_SpeakerWindowLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING,
jPanel_SpeakerWindowLayout
.createSequentialGroup()
.add(jPanel_SpeakerWindowLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel_SpeakerWindowLayout
.createSequentialGroup()
.add(jProgressBar_SpeakerProgress,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 622,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 77, Short.MAX_VALUE)
.add(jLabel_PromptCount, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jLabel_PromptTotal, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 86,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE).add(21, 21, 21))
.add(jPanel_SpeakerWindowLayout
.createSequentialGroup()
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 645,
Short.MAX_VALUE).add(233, 233, 233))).add(jLabel_SessionStatus))
.add(jTextPane_PromptDisplay, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 942, Short.MAX_VALUE));
jPanel_SpeakerWindowLayout.setVerticalGroup(jPanel_SpeakerWindowLayout.createParallelGroup(
org.jdesktop.layout.GroupLayout.LEADING).add(
org.jdesktop.layout.GroupLayout.TRAILING,
jPanel_SpeakerWindowLayout
.createSequentialGroup()
.add(jTextPane_PromptDisplay, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jPanel_SpeakerWindowLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, jLabel_SessionStatus)
.add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 181, Short.MAX_VALUE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jPanel_SpeakerWindowLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
.add(jPanel_SpeakerWindowLayout
.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(jLabel_PromptCount, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(jLabel_PromptTotal, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.add(jProgressBar_SpeakerProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)).add(28, 28, 28)));
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup()
.addContainerGap()
.add(jPanel_SpeakerWindow, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addContainerGap()));
layout.setVerticalGroup(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup()
.addContainerGap()
.add(jPanel_SpeakerWindow, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addContainerGap()));
pack();
}// </editor-fold>//GEN-END:initComponents
private void formComponentResized(java.awt.event.ComponentEvent evt) {// GEN-FIRST:event_formComponentResized
// this.updatePromptDisplay(this.promptText);
}// GEN-LAST:event_formComponentResized
private void formWindowClosing(java.awt.event.WindowEvent evt) {// GEN-FIRST:event_formWindowClosing
// Call method to deselect Speaker Window in Window menu of Admin Window
// How do I reference the instance of AdminWindow that created the Speaker Window object?
// AdminWindow.deselectSpeakerWindow();
// Or do we need to do this through a listener in AdminWindow?
}// GEN-LAST:event_formWindowClosing
/**
* @param args
* the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SpeakerWindow().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel_PromptCount;
private javax.swing.JLabel jLabel_PromptTotal;
private javax.swing.JLabel jLabel_SessionStatus;
private javax.swing.JPanel jPanel_SpeakerWindow;
private javax.swing.JProgressBar jProgressBar_SpeakerProgress;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextPane jTextPane_PromptDisplay;
private javax.swing.JTextPane jTextPane_nextSentence;
// End of variables declaration//GEN-END:variables
}