/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* AssAlphaDialog.java
*
* Created on 8 août 2010, 00:17:52
*/
package feuille.karaoke.dialog;
import java.awt.BorderLayout;
import feuille.lib.Language;
import feuille.karaoke.lib.TransparencyPreview;
/**
* <p>This is a dialog for the choice of alpha.<br />
* C'est une boîte de dialogue pour le choix de l'alpha.</p>
* @author The Wingate 2940
*/
public class AssAlphaDialog extends javax.swing.JDialog {
private ButtonPressed bp;
private int alpha;
private String hexa;
private Language localeLanguage = feuille.MainFrame.getLanguage();
private String Transparency = "Transparency : ";
private TransparencyPreview tp = new TransparencyPreview();
/** <p>A choice of state.<br />Un choix d'état.</p> */
public enum ButtonPressed{
NONE, OK_BUTTON, CANCEL_BUTTON;
}
/** <p>Creates new form AssAlphaDialog.<br />
* Crée un nouveau formulaire AssAlphaDialog.</p> */
public AssAlphaDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
pAlpha.add(tp, BorderLayout.CENTER);
//Force visibility
setAlwaysOnTop(true);
//Set the language
if(localeLanguage.getValueOf("titleAAD")!=null){setTitle(localeLanguage.getValueOf("titleAAD"));}
if(localeLanguage.getValueOf("buttonOk")!=null){OK_Button.setText(localeLanguage.getValueOf("buttonOk"));}
if(localeLanguage.getValueOf("buttonCancel")!=null){Cancel_Button.setText(localeLanguage.getValueOf("buttonCancel"));}
if(localeLanguage.getValueOf("buttonChange")!=null){btnChange.setText(localeLanguage.getValueOf("buttonChange"));}
if(localeLanguage.getValueOf("labelTransparency")!=null){Transparency=localeLanguage.getValueOf("labelTransparency");}
}
/** 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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
sldAlpha = new javax.swing.JSlider();
pAlpha = new javax.swing.JPanel();
lblAlpha = new javax.swing.JLabel();
OK_Button = new javax.swing.JButton();
Cancel_Button = new javax.swing.JButton();
tfChange = new javax.swing.JTextField();
btnChange = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Choose an alpha...");
sldAlpha.setMaximum(255);
sldAlpha.setValue(127);
sldAlpha.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
sldAlphaStateChanged(evt);
}
});
pAlpha.setLayout(new java.awt.BorderLayout());
lblAlpha.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
lblAlpha.setText("Transparency : 127 - 7F / 50%");
OK_Button.setText("OK");
OK_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OK_ButtonActionPerformed(evt);
}
});
Cancel_Button.setText("Cancel");
Cancel_Button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Cancel_ButtonActionPerformed(evt);
}
});
tfChange.setText("h7F");
tfChange.setToolTipText("<html>Transparency may be changed by using hexadecimals values, decimals values or percents values.<br>\nHexadecimals values samples : h33 or h7F.<br>\nDecimals values samples : 67 or 255.<br>\nPercents values samples : 33% or 100%.<br>\nPush the 'Change' button to apply the requested value.");
btnChange.setText("Change");
btnChange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnChangeActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(pAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, 138, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblAlpha, javax.swing.GroupLayout.DEFAULT_SIZE, 366, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(btnChange, javax.swing.GroupLayout.DEFAULT_SIZE, 87, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(tfChange, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(OK_Button, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(Cancel_Button, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(sldAlpha, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(sldAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(lblAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 11, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(Cancel_Button)
.addComponent(OK_Button)
.addComponent(tfChange, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnChange)))
.addComponent(pAlpha, javax.swing.GroupLayout.DEFAULT_SIZE, 60, Short.MAX_VALUE))
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void sldAlphaStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sldAlphaStateChanged
int percent = sldAlpha.getValue()*100/255;
hexa = Integer.toString(sldAlpha.getValue(), 16);
lblAlpha.setText(Transparency+sldAlpha.getValue()+
" - "+setTwoDigits(hexa).toUpperCase()+" / "+percent+"%");
alpha = sldAlpha.getValue();
tp.updateAlpha((100-percent)/100f);
tfChange.setText("h"+setTwoDigits(hexa).toUpperCase());
}//GEN-LAST:event_sldAlphaStateChanged
private void OK_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OK_ButtonActionPerformed
bp = ButtonPressed.OK_BUTTON;
dispose();
}//GEN-LAST:event_OK_ButtonActionPerformed
private void Cancel_ButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_Cancel_ButtonActionPerformed
bp = ButtonPressed.CANCEL_BUTTON;
dispose();
}//GEN-LAST:event_Cancel_ButtonActionPerformed
private void btnChangeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnChangeActionPerformed
/* Change an entry of the user into a value
* Entry starts with the letter 'h' -> hexadecimal mode.
* Entry has only number -> decimal mode.
* Entry has a percent -> percent mode. */
String text = tfChange.getText();
int result;
try{
if(text.startsWith("h") && text.length()==3){
// Hexadecimal mode
text = text.replace("h", "");
result = Integer.parseInt(text, 16);
sldAlpha.setValue(result);
}else if(text.matches("[0-9]+")){
// Decimal mode
result = Integer.parseInt(text);
sldAlpha.setValue(result);
}else if(text.contains("%")){
// Percent mode
text = text.replace("%", "");
result = Integer.parseInt(text);
sldAlpha.setValue(result*255/100);
}
}catch(Exception exc){}
}//GEN-LAST:event_btnChangeActionPerformed
/** <p>Return a string with two digits.<br />
* Retourne une chaine avic deux digits.</p> */
private String setTwoDigits(String hexa){
if(hexa.length()==1){hexa="0"+hexa;}
return hexa;
}
/** <p>Set the alpha.<br />Définit l'alpha.</p> */
public void setAssAlpha(int alpha){
this.alpha = alpha;
}
/** <p>Get the alpha.<br />Obtient l'alpha.</p> */
public int getAssAlpha(){
return alpha;
}
/** <p>Set the alpha in hexadecimal.<br />
* Définit l'alpha en hexadécimale.</p> */
public void setHexaAlpha(String hexa){
this.hexa = hexa;
if (hexa==null){this.hexa = "FF";}
try{
if (hexa.isEmpty()){this.hexa = "FF";}
}catch(Exception exc){}
try{
alpha = Integer.parseInt(hexa, 16);
}catch(Exception exc){}
}
/** <p>Get the alpha in hexadecimal.<br />
* Obtient l'alpha en héxadécimale.</p> */
public String getHexaAlpha(){
hexa = Integer.toString(sldAlpha.getValue(), 16);
if(hexa.length()==1){hexa = "0"+hexa;}
return hexa.toUpperCase();
}
/** <p>Show the dialog. Request and return an alpha in hexadecimal.<br />
* Montre la boîte de dialogue. Requiert et retourne un alpha en héxadécimale.</p> */
public String showDialog(String hexa){
setHexaAlpha(hexa);
sldAlpha.setValue(alpha);
setVisible(true);
if(bp.equals(ButtonPressed.OK_BUTTON)){
return getHexaAlpha();
}else{
return hexa;
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
AssAlphaDialog dialog = new AssAlphaDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton Cancel_Button;
private javax.swing.JButton OK_Button;
private javax.swing.JButton btnChange;
private javax.swing.JLabel lblAlpha;
private javax.swing.JPanel pAlpha;
private javax.swing.JSlider sldAlpha;
private javax.swing.JTextField tfChange;
// End of variables declaration//GEN-END:variables
}