/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package feuille.xtrn; import feuille.analysis.AnalysisPanel; import feuille.codeeditor.CodeEditorPanel; import feuille.drawing.DrawingPanel; import feuille.karaoke.KaraokePanel; import feuille.karaoke.lib.AssIO; import feuille.karaoke.lib.AssInfos; import feuille.karaoke.lib.AssNameCollection; import feuille.karaoke.lib.AssStyleCollection; import feuille.karaoke.lib.StylesPack; import feuille.lib.Configuration; import feuille.lib.Language; import feuille.scripting.ScriptPlugin; import feuille.theme.ThemeCollection; import java.awt.BorderLayout; import java.awt.Font; import java.awt.FontFormatException; import java.awt.Frame; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Locale; import javax.imageio.ImageIO; import javax.swing.JDesktopPane; import javax.swing.JInternalFrame; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.plaf.nimbus.NimbusLookAndFeel; /** * * @author Yves */ public class XtrnFrame extends javax.swing.JFrame { private JDesktopPane desk; private BufferedImage backgroundimage; private String DOCSPATH = "E:\\Dev\\Projets\\Java\\SmallBoxForFansub\\docs\\"; private String CODEPATH = ""; private Configuration cfg = new Configuration(); private ThemeCollection themecollection = new ThemeCollection(); private String theme = ""; private String force_ISO = "---"; private Font fontToUse = getFont(); private KaraokePanel kp; private CodeEditorPanel cep; private DrawingPanel dp; private AnalysisPanel ap; private JInternalFrame kpOriginal, kpResult, kpSound, kpTree, cepCode, dpFile, dpDraw, dpImage, dpShape, dpMode, dpOps, dpScripts, dpHistoric, dpLayers, dpOrnament, dpSheet, dpAssComs, apFirstTable, apFirstReport, apSecondTable, apSecondReport, wpWelcome; private static AssInfos ai = new AssInfos(); private static AssNameCollection anc = new AssNameCollection(""); private static AssStyleCollection ascScript = new AssStyleCollection(); private static ScriptPlugin splug; private static Language localeLanguage; private static Frame frame; private static List<StylesPack> listStylesPack; public enum UseXtrn{ Karaoke, Drawing, Analysis; } /** * Creates new form XtrnFrame */ public XtrnFrame() { initComponents(); init(); } private void init(){ if((new File(DOCSPATH)).exists()==false | (new File(getApplicationDirectory()+"\\docs\\")).exists()==false){ DOCSPATH = getApplicationDirectory()+"\\docs\\"; //Défaut File f = new File(DOCSPATH); f.mkdir(); }else{ DOCSPATH = getApplicationDirectory()+"\\docs\\"; //Défaut } cfg.put(Configuration.Type.DOCS_PATH, DOCSPATH); cfg.put(Configuration.Type.CODE_EDITOR, CODEPATH); cfg.put(Configuration.Type.FONT, ""); cfg.put(Configuration.Type.BACKGD_IMAGE, ""); cfg.put(Configuration.Type.THEME, ""); cfg.put(Configuration.Type.ORG_TABLE_DISPLAY, ""); cfg.put(Configuration.Type.RES_TABLE_DISPLAY, ""); cfg.put(Configuration.Type.CHK_UPDATE, ""); cfg.put(Configuration.Type.FORCE_ISO, force_ISO); cfg.put(Configuration.Type.KARA_MODULE, "yes"); cfg.put(Configuration.Type.CODE_MODULE, "yes"); cfg.put(Configuration.Type.DRAW_MODULE, "yes"); cfg.put(Configuration.Type.ANAL_MODULE, "yes"); cfg.put(Configuration.Type.STARTWITH, "welc"); AssIO aio = new AssIO(); if(!aio.HasConfigFile()){//If there is no file then create a new file aio.createConfigFile(); } cfg = aio.ReadConfig(); DOCSPATH = cfg.get(Configuration.Type.DOCS_PATH); CODEPATH = cfg.get(Configuration.Type.CODE_EDITOR); try{ fontToUse = Font.createFont(Font.TRUETYPE_FONT, new File(cfg.get(Configuration.Type.FONT))).deriveFont(12f); }catch( FontFormatException | IOException ffe){ fontToUse = getFont(); } try { backgroundimage = ImageIO.read(new File(cfg.get(Configuration.Type.BACKGD_IMAGE))); } catch (IOException ex) { backgroundimage = null; } theme = cfg.get(Configuration.Type.THEME); force_ISO = cfg.get(Configuration.Type.FORCE_ISO); desk = new JDesktopPane() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if(backgroundimage!=null){ g.drawImage(backgroundimage, 0, 0, null); } } }; mainPanel.add(desk, BorderLayout.CENTER); java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit(); java.awt.Dimension dim = toolkit.getScreenSize(); java.awt.GraphicsConfiguration gconf = java.awt.GraphicsEnvironment .getLocalGraphicsEnvironment().getDefaultScreenDevice() .getDefaultConfiguration(); java.awt.Insets insets = toolkit.getScreenInsets(gconf); setSize(dim.width - insets.left - insets.right, dim.height - insets.top - insets.bottom); try { javax.swing.UIManager.setLookAndFeel(new NimbusLookAndFeel()); javax.swing.SwingUtilities.updateComponentTreeUI(this); } catch (UnsupportedLookAndFeelException exc) { System.out.println("Nimbus LookAndFeel not loaded : "+exc); } localeLanguage = new Language(Locale.getDefault(), force_ISO, DOCSPATH); splug = new ScriptPlugin(this); splug.setPaths(DOCSPATH, DOCSPATH, DOCSPATH); splug.setModelsForManagement( feuille.karaoke.KaraokePanel.getOriginalTableModel(), feuille.karaoke.KaraokePanel.getResultTableModel()); splug.setVideoSize(1280, 720); splug.setAssStyleCollection(ascScript); // dcbmSplug = new DefaultComboBoxModel(); // cbbr = new ComboBoxButtonRenderer(); // cbButtonScript.setModel(dcbmSplug); // cbButtonScript.setRenderer(cbbr); splug.searchForScript(DOCSPATH); List<Object> sobjList = new ArrayList<>(splug.getSObjectList()); // for(Object o : sobjList){ // if(o instanceof SButton){ // SButton sb = (SButton)o; // boolean found = false; // for(int i=0;i<dcbmSplug.getSize();i++){ // if(sb.equals(dcbmSplug.getElementAt(i))){found = true;} // } // if(found==false){ // dcbmSplug.addElement(sb); // System.out.println("Ruby ou Python plugin : \""+sb.getDisplayName()+"\" by "+sb.getAuthors()); // } // } // } } public String getApplicationDirectory(){ if(System.getProperty("os.name").equalsIgnoreCase("Mac OS X")){ java.io.File file = new java.io.File(""); return file.getAbsolutePath(); } String path = System.getProperty("user.dir"); if(path.toLowerCase().contains("jre")){ File f = new File(getClass().getProtectionDomain() .getCodeSource().getLocation().toString() .substring(6)); path = f.getParent(); } return path; } public void setXtrn(UseXtrn xtr){ switch(xtr){ case Karaoke: kp = new KaraokePanel(DOCSPATH, fontToUse, localeLanguage, this); cep = new CodeEditorPanel(DOCSPATH, this, localeLanguage); kp.setScriptPlugin(splug); kp.setCodeEditor(CODEPATH); kpOriginal = kp.getOriginalTable(); kpResult = kp.getResultTable(); kpSound = kp.getWaveform(); kpTree = kp.getTree(); kpOriginal.setLocation(10, 10); kpOriginal.setSize(desk.getWidth()-210, desk.getHeight()/2-20); kpResult.setLocation(10, desk.getHeight()/2); kpResult.setSize(desk.getWidth()-210, desk.getHeight()/2-20); kpSound.setLocation(10, desk.getHeight()/2); kpSound.setSize(desk.getWidth()-210, desk.getHeight()/2-50); kpTree.setLocation(desk.getWidth()-190, 10); kpTree.setSize(180, desk.getHeight()-30); desk.add(kpOriginal); desk.add(kpResult); desk.add(kpSound); desk.add(kpTree); cep.setScriptPlugin(splug); cepCode = cep.getCode(); cepCode.setLocation(10, 10); cepCode.setSize(desk.getWidth()-210, desk.getHeight()-30); desk.add(cepCode); break; case Drawing: dp = new DrawingPanel(DOCSPATH, this, localeLanguage); dp.setScriptPlugin(splug); dpFile = dp.getIfrFile(); dpDraw = dp.getIfrDraw(); dpImage = dp.getIfrImage(); dpShape = dp.getIfrShape(); dpMode = dp.getIfrMode(); dpOps = dp.getIfrOperations(); dpScripts = dp.getIfrScripts(); dpHistoric = dp.getIfrHistoric(); dpLayers = dp.getIfrLayers(); dpOrnament = dp.getIfrOrnament(); dpSheet = dp.getIfrSketchpad(); dpAssComs = dp.getIfrAssCommands(); dpHistoric.setLocation(desk.getWidth()-190, 340); dpLayers.setLocation(desk.getWidth()-190, 700); dpOrnament.setLocation(desk.getWidth()-190, 90); dpSheet.setSize(desk.getWidth()-400, desk.getHeight()-100); dpAssComs.setSize(desk.getWidth()-210, dpAssComs.getHeight()); desk.add(dpFile); desk.add(dpDraw); desk.add(dpImage); desk.add(dpShape); desk.add(dpMode); desk.add(dpOps); desk.add(dpScripts); desk.add(dpHistoric); desk.add(dpLayers); desk.add(dpOrnament); desk.add(dpSheet); desk.add(dpAssComs); break; case Analysis: ap = new AnalysisPanel(this); apFirstTable = ap.getIfrFirstTable(); apFirstReport = ap.getIfrFirstReport(); apSecondTable = ap.getIfrSecondTable(); apSecondReport = ap.getIfrSecondReport(); apFirstTable.setLocation(10,10); apFirstTable.setSize(desk.getWidth()-580, desk.getHeight()/2-20); apSecondTable.setLocation(10,desk.getHeight()/2); apSecondTable.setSize(desk.getWidth()-580, desk.getHeight()/2-20); apFirstReport.setLocation(desk.getWidth()-560, 10); apFirstReport.setSize(550, desk.getHeight()/2-20); apSecondReport.setLocation(desk.getWidth()-560, desk.getHeight()/2); apSecondReport.setSize(550, desk.getHeight()/2-20); desk.add(apFirstTable); desk.add(apFirstReport); desk.add(apSecondTable); desk.add(apSecondReport); break; } } /** * 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() { mainPanel = new javax.swing.JPanel(); jMenuBar1 = new javax.swing.JMenuBar(); jMenu1 = new javax.swing.JMenu(); jMenu2 = new javax.swing.JMenu(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); mainPanel.setLayout(new java.awt.BorderLayout()); getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); jMenu1.setText("File"); jMenuBar1.add(jMenu1); jMenu2.setText("Edit"); jMenuBar1.add(jMenu2); setJMenuBar(jMenuBar1); pack(); }// </editor-fold>//GEN-END:initComponents /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(XtrnFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(XtrnFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(XtrnFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(XtrnFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new XtrnFrame().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JMenu jMenu1; private javax.swing.JMenu jMenu2; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JPanel mainPanel; // End of variables declaration//GEN-END:variables }