Parcourir la source

working on fileextension handling. Config and startup done

LH il y a 10 ans
Parent
commit
e754795d1e

+ 59 - 0
iZpl/src/dist/bin/izplFEX.bat

@@ -0,0 +1,59 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  iZpl startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and I_ZPL_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%..
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+@rem Execute iZpl
+start "%APP_HOME%\bin\izpl.bat" %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable I_ZPL_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%I_ZPL_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega

BIN
iZpl/src/dist/res/izpl.ico


BIN
iZpl/src/dist/res/izplresume.ico


+ 53 - 59
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/ConfigureScreen.form

@@ -30,21 +30,17 @@
     <DimensionLayout dim="0">
       <Group type="103" groupAlignment="0" attributes="0">
           <Group type="102" attributes="0">
-              <Group type="103" groupAlignment="0" attributes="0">
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace max="-2" attributes="0"/>
-                      <Component id="tabpaneOptions" min="-2" pref="405" max="-2" attributes="0"/>
-                  </Group>
-                  <Group type="102" alignment="0" attributes="0">
-                      <EmptySpace min="-2" pref="77" max="-2" attributes="0"/>
-                      <Component id="btnSaveAndExit" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Component id="btnSave" min="-2" pref="88" max="-2" attributes="0"/>
-                      <EmptySpace type="unrelated" max="-2" attributes="0"/>
-                      <Component id="btnCancel" min="-2" pref="127" max="-2" attributes="0"/>
-                  </Group>
-              </Group>
-              <EmptySpace pref="20" max="32767" attributes="0"/>
+              <EmptySpace min="-2" pref="77" max="-2" attributes="0"/>
+              <Component id="btnSaveAndExit" min="-2" max="-2" attributes="0"/>
+              <EmptySpace type="separate" max="-2" attributes="0"/>
+              <Component id="btnSave" min="-2" pref="88" max="-2" attributes="0"/>
+              <EmptySpace type="unrelated" max="-2" attributes="0"/>
+              <Component id="btnCancel" min="-2" pref="127" max="-2" attributes="0"/>
+              <EmptySpace max="32767" attributes="0"/>
+          </Group>
+          <Group type="102" alignment="0" attributes="0">
+              <EmptySpace max="-2" attributes="0"/>
+              <Component id="tabpaneOptions" max="32767" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -52,14 +48,14 @@
       <Group type="103" groupAlignment="0" attributes="0">
           <Group type="102" alignment="0" attributes="0">
               <EmptySpace max="-2" attributes="0"/>
-              <Component id="tabpaneOptions" min="-2" pref="275" max="-2" attributes="0"/>
+              <Component id="tabpaneOptions" max="32767" attributes="0"/>
               <EmptySpace type="unrelated" max="-2" attributes="0"/>
               <Group type="103" groupAlignment="3" attributes="0">
                   <Component id="btnSave" alignment="3" min="-2" max="-2" attributes="0"/>
                   <Component id="btnCancel" alignment="3" min="-2" max="-2" attributes="0"/>
                   <Component id="btnSaveAndExit" alignment="3" min="-2" max="-2" attributes="0"/>
               </Group>
-              <EmptySpace pref="12" max="32767" attributes="0"/>
+              <EmptySpace max="-2" attributes="0"/>
           </Group>
       </Group>
     </DimensionLayout>
@@ -83,35 +79,36 @@
               <Group type="103" groupAlignment="0" attributes="0">
                   <Group type="102" attributes="0">
                       <EmptySpace max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="1" attributes="0">
-                          <Component id="rbEstensionMode" alignment="0" min="-2" max="-2" attributes="0"/>
-                          <Component id="rbStandaloneMode" alignment="0" min="-2" max="-2" attributes="0"/>
-                      </Group>
-                      <EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="0" max="-2" attributes="0">
-                          <Component id="jButton4" max="32767" attributes="0"/>
-                          <Component id="btnPlayerSelect" pref="192" max="32767" attributes="0"/>
+                      <Group type="103" groupAlignment="0" attributes="0">
+                          <Group type="103" groupAlignment="1" attributes="0">
+                              <Component id="cboxPlayersAvailable" min="-2" pref="237" max="-2" attributes="0"/>
+                              <Group type="102" attributes="0">
+                                  <Component id="rbEstensionMode" min="-2" max="-2" attributes="0"/>
+                                  <EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
+                                  <Component id="btnPlayerSelect" min="-2" pref="192" max="-2" attributes="0"/>
+                              </Group>
+                              <Group type="103" alignment="1" groupAlignment="0" max="-2" attributes="0">
+                                  <Component id="registerFileExts" max="32767" attributes="0"/>
+                                  <Component id="cbxPluginUI" alignment="0" pref="237" max="32767" attributes="0"/>
+                              </Group>
+                          </Group>
+                          <Component id="rbStandaloneMode" alignment="0" min="-2" pref="159" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace max="32767" attributes="0"/>
+                      <EmptySpace pref="30" max="32767" attributes="0"/>
                   </Group>
                   <Group type="102" alignment="0" attributes="0">
                       <EmptySpace min="-2" pref="24" max="-2" attributes="0"/>
                       <Group type="103" groupAlignment="0" attributes="0">
                           <Group type="102" attributes="0">
-                              <Component id="lblVLCPath" min="-2" pref="350" max="-2" attributes="0"/>
-                              <EmptySpace max="32767" attributes="0"/>
+                              <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+                              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
                           </Group>
                           <Group type="102" attributes="0">
                               <Group type="103" groupAlignment="0" attributes="0">
+                                  <Component id="lblVLCPath" min="-2" pref="350" max="-2" attributes="0"/>
                                   <Component id="jLabel1" min="-2" pref="88" max="-2" attributes="0"/>
-                                  <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
                               </Group>
                               <EmptySpace max="32767" attributes="0"/>
-                              <Group type="103" groupAlignment="0" attributes="0">
-                                  <Component id="cbxPluginUI" min="-2" pref="237" max="-2" attributes="0"/>
-                                  <Component id="cboxPlayersAvailable" min="-2" pref="237" max="-2" attributes="0"/>
-                              </Group>
-                              <EmptySpace min="-2" pref="261" max="-2" attributes="0"/>
                           </Group>
                       </Group>
                   </Group>
@@ -127,28 +124,21 @@
                           <Component id="rbEstensionMode" alignment="3" min="-2" max="-2" attributes="0"/>
                           <Component id="btnPlayerSelect" alignment="3" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace max="32767" attributes="0"/>
+                      <EmptySpace pref="16" max="32767" attributes="0"/>
                       <Component id="lblVLCPath" min="-2" max="-2" attributes="0"/>
                       <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Group type="103" groupAlignment="0" attributes="0">
-                          <Group type="102" alignment="0" attributes="0">
-                              <Group type="103" groupAlignment="3" attributes="0">
-                                  <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
-                                  <Component id="cboxPlayersAvailable" alignment="3" min="-2" max="-2" attributes="0"/>
-                              </Group>
-                              <EmptySpace min="0" pref="0" max="32767" attributes="0"/>
-                          </Group>
-                          <Group type="102" alignment="1" attributes="0">
-                              <EmptySpace min="-2" pref="77" max="-2" attributes="0"/>
-                              <Group type="103" groupAlignment="3" attributes="0">
-                                  <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
-                                  <Component id="cbxPluginUI" alignment="3" min="-2" max="-2" attributes="0"/>
-                              </Group>
-                          </Group>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="cboxPlayersAvailable" alignment="3" min="-2" max="-2" attributes="0"/>
                       </Group>
-                      <EmptySpace max="-2" attributes="0"/>
-                      <Component id="jButton4" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace min="-2" pref="27" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
+                      <Group type="103" groupAlignment="3" attributes="0">
+                          <Component id="cbxPluginUI" alignment="3" min="-2" max="-2" attributes="0"/>
+                          <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
+                      </Group>
+                      <EmptySpace min="-2" pref="42" max="-2" attributes="0"/>
+                      <Component id="registerFileExts" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
                   </Group>
               </Group>
             </DimensionLayout>
@@ -202,10 +192,13 @@
                 </Property>
               </Properties>
             </Component>
-            <Component class="javax.swing.JButton" name="jButton4">
+            <Component class="javax.swing.JButton" name="registerFileExts">
               <Properties>
                 <Property name="text" type="java.lang.String" value="Register FileExtensions"/>
               </Properties>
+              <Events>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="registerFileExtsActionPerformed"/>
+              </Events>
             </Component>
             <Component class="javax.swing.JLabel" name="jLabel1">
               <Properties>
@@ -242,7 +235,7 @@
                       <EmptySpace type="separate" max="-2" attributes="0"/>
                       <Group type="103" groupAlignment="0" attributes="0">
                           <Component id="jButton2" max="32767" attributes="0"/>
-                          <Component id="jButton3" alignment="0" pref="173" max="32767" attributes="0"/>
+                          <Component id="btnReloadSkinList" alignment="0" pref="193" max="32767" attributes="0"/>
                       </Group>
                       <EmptySpace max="-2" attributes="0"/>
                   </Group>
@@ -258,8 +251,8 @@
                       <EmptySpace min="-2" pref="96" max="-2" attributes="0"/>
                       <Component id="jButton2" min="-2" max="-2" attributes="0"/>
                       <EmptySpace type="separate" max="-2" attributes="0"/>
-                      <Component id="jButton3" min="-2" max="-2" attributes="0"/>
-                      <EmptySpace pref="87" max="32767" attributes="0"/>
+                      <Component id="btnReloadSkinList" min="-2" max="-2" attributes="0"/>
+                      <EmptySpace pref="114" max="32767" attributes="0"/>
                   </Group>
               </Group>
             </DimensionLayout>
@@ -285,14 +278,15 @@
             <Component class="javax.swing.JButton" name="jButton2">
               <Properties>
                 <Property name="text" type="java.lang.String" value="Skin installieren"/>
+                <Property name="enabled" type="boolean" value="false"/>
               </Properties>
             </Component>
-            <Component class="javax.swing.JButton" name="jButton3">
+            <Component class="javax.swing.JButton" name="btnReloadSkinList">
               <Properties>
                 <Property name="text" type="java.lang.String" value="Skin-liste neu einlesen"/>
               </Properties>
               <Events>
-                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
+                <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnReloadSkinListActionPerformed"/>
               </Events>
             </Component>
           </SubComponents>

+ 72 - 60
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/ConfigureScreen.java

@@ -11,6 +11,7 @@ import de.nplusc.izc.iZpl.API.PlaybackPlugin;
 import de.nplusc.izc.iZpl.API.UIPlugin;
 import de.nplusc.izc.iZpl.Configuration;
 import de.nplusc.izc.iZpl.Main;
+import de.nplusc.izc.tools.baseTools.Detectors;
 import de.nplusc.izc.tools.baseTools.Tools;
 import java.io.File;
 import java.io.FileWriter;
@@ -102,7 +103,7 @@ public class ConfigureScreen extends javax.swing.JFrame
         btnPlayerSelect = new javax.swing.JButton();
         cboxPlayersAvailable = new javax.swing.JComboBox();
         cbxPluginUI = new javax.swing.JComboBox();
-        jButton4 = new javax.swing.JButton();
+        registerFileExts = new javax.swing.JButton();
         jLabel1 = new javax.swing.JLabel();
         jLabel2 = new javax.swing.JLabel();
         lblVLCPath = new javax.swing.JLabel();
@@ -110,7 +111,7 @@ public class ConfigureScreen extends javax.swing.JFrame
         jScrollPane1 = new javax.swing.JScrollPane();
         lstSkins = new javax.swing.JList();
         jButton2 = new javax.swing.JButton();
-        jButton3 = new javax.swing.JButton();
+        btnReloadSkinList = new javax.swing.JButton();
         btnSave = new javax.swing.JButton();
         btnCancel = new javax.swing.JButton();
         btnSaveAndExit = new javax.swing.JButton();
@@ -136,7 +137,14 @@ public class ConfigureScreen extends javax.swing.JFrame
 
         cbxPluginUI.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
 
-        jButton4.setText("Register FileExtensions");
+        registerFileExts.setText("Register FileExtensions");
+        registerFileExts.addActionListener(new java.awt.event.ActionListener()
+        {
+            public void actionPerformed(java.awt.event.ActionEvent evt)
+            {
+                registerFileExtsActionPerformed(evt);
+            }
+        });
 
         jLabel1.setText("Playback-Module");
 
@@ -150,29 +158,29 @@ public class ConfigureScreen extends javax.swing.JFrame
             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(jPanel1Layout.createSequentialGroup()
                 .addContainerGap()
-                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
-                    .addComponent(rbEstensionMode, javax.swing.GroupLayout.Alignment.LEADING)
-                    .addComponent(rbStandaloneMode, javax.swing.GroupLayout.Alignment.LEADING))
-                .addGap(33, 33, 33)
-                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
-                    .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                    .addComponent(btnPlayerSelect, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE))
-                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+                    .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+                        .addComponent(cboxPlayersAvailable, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)
+                        .addGroup(jPanel1Layout.createSequentialGroup()
+                            .addComponent(rbEstensionMode)
+                            .addGap(33, 33, 33)
+                            .addComponent(btnPlayerSelect, javax.swing.GroupLayout.PREFERRED_SIZE, 192, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+                            .addComponent(registerFileExts, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                            .addComponent(cbxPluginUI, 0, 237, Short.MAX_VALUE)))
+                    .addComponent(rbStandaloneMode, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addContainerGap(30, Short.MAX_VALUE))
             .addGroup(jPanel1Layout.createSequentialGroup()
                 .addGap(24, 24, 24)
                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addGroup(jPanel1Layout.createSequentialGroup()
-                        .addComponent(lblVLCPath, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE)
-                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+                        .addComponent(jLabel2)
+                        .addGap(0, 0, Short.MAX_VALUE))
                     .addGroup(jPanel1Layout.createSequentialGroup()
                         .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
-                            .addComponent(jLabel2))
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                            .addComponent(cbxPluginUI, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE)
-                            .addComponent(cboxPlayersAvailable, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE))
-                        .addGap(261, 261, 261))))
+                            .addComponent(lblVLCPath, javax.swing.GroupLayout.PREFERRED_SIZE, 350, javax.swing.GroupLayout.PREFERRED_SIZE)
+                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE))
+                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
         );
         jPanel1Layout.setVerticalGroup(
             jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -183,23 +191,19 @@ public class ConfigureScreen extends javax.swing.JFrame
                 .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                     .addComponent(rbEstensionMode)
                     .addComponent(btnPlayerSelect))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
                 .addComponent(lblVLCPath)
                 .addGap(18, 18, 18)
-                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(jPanel1Layout.createSequentialGroup()
-                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                            .addComponent(jLabel1)
-                            .addComponent(cboxPlayersAvailable, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
-                        .addGap(0, 0, Short.MAX_VALUE))
-                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
-                        .addGap(77, 77, 77)
-                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
-                            .addComponent(jLabel2)
-                            .addComponent(cbxPluginUI, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
-                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
-                .addComponent(jButton4)
-                .addGap(27, 27, 27))
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(jLabel1)
+                    .addComponent(cboxPlayersAvailable, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+                .addGap(33, 33, 33)
+                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+                    .addComponent(cbxPluginUI, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+                    .addComponent(jLabel2))
+                .addGap(42, 42, 42)
+                .addComponent(registerFileExts)
+                .addGap(9, 9, 9))
         );
 
         tabpaneOptions.addTab("General Options", jPanel1);
@@ -209,13 +213,14 @@ public class ConfigureScreen extends javax.swing.JFrame
         jScrollPane1.setViewportView(lstSkins);
 
         jButton2.setText("Skin installieren");
+        jButton2.setEnabled(false);
 
-        jButton3.setText("Skin-liste neu einlesen");
-        jButton3.addActionListener(new java.awt.event.ActionListener()
+        btnReloadSkinList.setText("Skin-liste neu einlesen");
+        btnReloadSkinList.addActionListener(new java.awt.event.ActionListener()
         {
             public void actionPerformed(java.awt.event.ActionEvent evt)
             {
-                jButton3ActionPerformed(evt);
+                btnReloadSkinListActionPerformed(evt);
             }
         });
 
@@ -229,7 +234,7 @@ public class ConfigureScreen extends javax.swing.JFrame
                 .addGap(18, 18, 18)
                 .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                     .addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
-                    .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE))
+                    .addComponent(btnReloadSkinList, javax.swing.GroupLayout.DEFAULT_SIZE, 193, Short.MAX_VALUE))
                 .addContainerGap())
         );
         jPanel2Layout.setVerticalGroup(
@@ -241,8 +246,8 @@ public class ConfigureScreen extends javax.swing.JFrame
                 .addGap(96, 96, 96)
                 .addComponent(jButton2)
                 .addGap(18, 18, 18)
-                .addComponent(jButton3)
-                .addContainerGap(87, Short.MAX_VALUE))
+                .addComponent(btnReloadSkinList)
+                .addContainerGap(114, Short.MAX_VALUE))
         );
 
         tabpaneOptions.addTab("Skins", jPanel2);
@@ -279,30 +284,28 @@ public class ConfigureScreen extends javax.swing.JFrame
         layout.setHorizontalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(layout.createSequentialGroup()
-                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
-                    .addGroup(layout.createSequentialGroup()
-                        .addContainerGap()
-                        .addComponent(tabpaneOptions, javax.swing.GroupLayout.PREFERRED_SIZE, 405, javax.swing.GroupLayout.PREFERRED_SIZE))
-                    .addGroup(layout.createSequentialGroup()
-                        .addGap(77, 77, 77)
-                        .addComponent(btnSaveAndExit)
-                        .addGap(18, 18, 18)
-                        .addComponent(btnSave, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
-                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
-                        .addComponent(btnCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)))
-                .addContainerGap(20, Short.MAX_VALUE))
+                .addGap(77, 77, 77)
+                .addComponent(btnSaveAndExit)
+                .addGap(18, 18, 18)
+                .addComponent(btnSave, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+                .addComponent(btnCancel, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+            .addGroup(layout.createSequentialGroup()
+                .addContainerGap()
+                .addComponent(tabpaneOptions))
         );
         layout.setVerticalGroup(
             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
             .addGroup(layout.createSequentialGroup()
                 .addContainerGap()
-                .addComponent(tabpaneOptions, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE)
+                .addComponent(tabpaneOptions)
                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                     .addComponent(btnSave)
                     .addComponent(btnCancel)
                     .addComponent(btnSaveAndExit))
-                .addContainerGap(12, Short.MAX_VALUE))
+                .addContainerGap())
         );
 
         pack();
@@ -365,15 +368,24 @@ public class ConfigureScreen extends javax.swing.JFrame
          }
     }//GEN-LAST:event_btnPlayerSelectActionPerformed
 
-    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_jButton3ActionPerformed
-    {//GEN-HEADEREND:event_jButton3ActionPerformed
+    private void btnReloadSkinListActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnReloadSkinListActionPerformed
+    {//GEN-HEADEREND:event_btnReloadSkinListActionPerformed
         Main.detectSkins();
         ((DefaultListModel)lstSkins.getModel()).removeAllElements();
         for (String skinFileName : IZPLApi.getAvailableSkins())
         {
             ((DefaultListModel)lstSkins.getModel()).addElement(skinFileName);
         }
-    }//GEN-LAST:event_jButton3ActionPerformed
+    }//GEN-LAST:event_btnReloadSkinListActionPerformed
+
+    private void registerFileExtsActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_registerFileExtsActionPerformed
+    {//GEN-HEADEREND:event_registerFileExtsActionPerformed
+        new Thread(()->
+        {
+            String startScriptExt=Detectors.getSystemClassification()[0].equals("windows")?".bat":"";
+            Tools.runCmdWithPassthru(System.out, IZPLApi.APPDIR+File.separator+"bin"+File.separator+"iZpl"+startScriptExt, "--registerfileextensions");
+        }).start();
+    }//GEN-LAST:event_registerFileExtsActionPerformed
 
 
 
@@ -381,13 +393,12 @@ public class ConfigureScreen extends javax.swing.JFrame
     private javax.swing.ButtonGroup bgUISelection;
     private javax.swing.JButton btnCancel;
     private javax.swing.JButton btnPlayerSelect;
+    private javax.swing.JButton btnReloadSkinList;
     private javax.swing.JButton btnSave;
     private javax.swing.JButton btnSaveAndExit;
     private javax.swing.JComboBox cboxPlayersAvailable;
     private javax.swing.JComboBox cbxPluginUI;
     private javax.swing.JButton jButton2;
-    private javax.swing.JButton jButton3;
-    private javax.swing.JButton jButton4;
     private javax.swing.JLabel jLabel1;
     private javax.swing.JLabel jLabel2;
     private javax.swing.JPanel jPanel1;
@@ -398,6 +409,7 @@ public class ConfigureScreen extends javax.swing.JFrame
     private javax.swing.ButtonGroup modeGroup;
     private javax.swing.JRadioButton rbEstensionMode;
     private javax.swing.JRadioButton rbStandaloneMode;
+    private javax.swing.JButton registerFileExts;
     private javax.swing.JTabbedPane tabpaneOptions;
     // End of variables declaration//GEN-END:variables
 }

+ 5 - 0
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/IZplGUIDefault.form

@@ -8,6 +8,9 @@
     <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
     <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
   </SyntheticProperties>
+  <Events>
+    <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="formKeyPressed"/>
+  </Events>
   <AuxValues>
     <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
     <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
@@ -94,6 +97,7 @@
       </Properties>
       <Events>
         <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnSkipActionPerformed"/>
+        <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="btnSkipKeyPressed"/>
       </Events>
     </Component>
     <Component class="javax.swing.JButton" name="btnShowList">
@@ -102,6 +106,7 @@
       </Properties>
       <Events>
         <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnShowListActionPerformed"/>
+        <EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="btnShowListKeyPressed"/>
       </Events>
     </Component>
     <Container class="javax.swing.JPanel" name="pnlCoverPicture">

+ 68 - 4
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/IZplGUIDefault.java

@@ -9,10 +9,17 @@ import de.nplusc.izc.iZpl.API.PlaybackPlugin;
 import de.nplusc.izc.iZpl.Main;
 import java.awt.EventQueue;
 import java.awt.Image;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.InputMap;
+import javax.swing.JComponent;
+import javax.swing.KeyStroke;
 
 /**
  *
@@ -63,6 +70,13 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
         lblStatus = new javax.swing.JLabel();
 
         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
+        addKeyListener(new java.awt.event.KeyAdapter()
+        {
+            public void keyPressed(java.awt.event.KeyEvent evt)
+            {
+                formKeyPressed(evt);
+            }
+        });
 
         btnPlayPause.setText("Play");
         btnPlayPause.addActionListener(new java.awt.event.ActionListener()
@@ -81,6 +95,13 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
                 btnSkipActionPerformed(evt);
             }
         });
+        btnSkip.addKeyListener(new java.awt.event.KeyAdapter()
+        {
+            public void keyPressed(java.awt.event.KeyEvent evt)
+            {
+                btnSkipKeyPressed(evt);
+            }
+        });
 
         btnShowList.setText("Show List");
         btnShowList.addActionListener(new java.awt.event.ActionListener()
@@ -90,6 +111,13 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
                 btnShowListActionPerformed(evt);
             }
         });
+        btnShowList.addKeyListener(new java.awt.event.KeyAdapter()
+        {
+            public void keyPressed(java.awt.event.KeyEvent evt)
+            {
+                btnShowListKeyPressed(evt);
+            }
+        });
 
         javax.swing.GroupLayout pnlCoverPictureLayout = new javax.swing.GroupLayout(pnlCoverPicture);
         pnlCoverPicture.setLayout(pnlCoverPictureLayout);
@@ -154,8 +182,9 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
         pack();
     }// </editor-fold>//GEN-END:initComponents
     private boolean playing=false;
-    private void btnPlayPauseActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnPlayPauseActionPerformed
-    {//GEN-HEADEREND:event_btnPlayPauseActionPerformed
+    
+    private void play()
+    {
         if(!connected)
         {
             selectedPlaybackPlugin.connectToPlayer();
@@ -174,6 +203,11 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
             btnPlayPause.setText("Pause");
             playing=true;
         }
+    }
+    
+    private void btnPlayPauseActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnPlayPauseActionPerformed
+    {//GEN-HEADEREND:event_btnPlayPauseActionPerformed
+        play();
     }//GEN-LAST:event_btnPlayPauseActionPerformed
 
     private void btnSkipActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_btnSkipActionPerformed
@@ -185,6 +219,21 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
     {//GEN-HEADEREND:event_btnShowListActionPerformed
         loadPlayListEditScreen();
     }//GEN-LAST:event_btnShowListActionPerformed
+
+    private void formKeyPressed(java.awt.event.KeyEvent evt)//GEN-FIRST:event_formKeyPressed
+    {//GEN-HEADEREND:event_formKeyPressed
+
+    }//GEN-LAST:event_formKeyPressed
+
+    private void btnShowListKeyPressed(java.awt.event.KeyEvent evt)//GEN-FIRST:event_btnShowListKeyPressed
+    {//GEN-HEADEREND:event_btnShowListKeyPressed
+
+    }//GEN-LAST:event_btnShowListKeyPressed
+
+    private void btnSkipKeyPressed(java.awt.event.KeyEvent evt)//GEN-FIRST:event_btnSkipKeyPressed
+    {//GEN-HEADEREND:event_btnSkipKeyPressed
+
+    }//GEN-LAST:event_btnSkipKeyPressed
     private String trackTime = "--:--";
     @Override
     public void setTrackLength(int seconds)
@@ -311,11 +360,26 @@ public class IZplGUIDefault extends javax.swing.JFrame implements IZPlGuiCommon,
     @Override
     public void loadPlayListEditScreen()
     {
-        playlisteditUI.setVisibleAux(playing);
+        playlisteditUI.setVisibleAux(true);
     }
     @Override
     public void initializeUI()
     {
-        
+        //play();
+        int condition = JComponent.WHEN_IN_FOCUSED_WINDOW;
+        InputMap inputMap = getRootPane().getInputMap(condition);
+        ActionMap actionMap = getRootPane().getActionMap();
+        KeyStroke spacebar = KeyStroke.getKeyStroke(KeyEvent.VK_SPACE , 0, false);
+        String leertaste = "leertaste gedappt";
+        inputMap.put( spacebar,leertaste);
+        actionMap.put(leertaste, new AbstractAction()
+        {
+
+            @Override
+            public void actionPerformed(ActionEvent e)
+            {
+                play();
+            }
+        });
     }
 }

+ 65 - 21
iZpl/src/main/java/de/nplusc/izc/iZpl/GUI/IZplGUISkinnable.java

@@ -7,7 +7,6 @@ package de.nplusc.izc.iZpl.GUI;
 import com.sun.awt.AWTUtilities;
 import de.nplusc.izc.iZpl.API.IZPLApi;
 import de.nplusc.izc.iZpl.API.PlaybackPlugin;
-import de.nplusc.izc.iZpl.Main;
 import de.nplusc.izc.tools.UiToolz.ComponentMover;
 import de.nplusc.izc.tools.UiToolz.HoloJPanel;
 import de.nplusc.izc.tools.UiToolz.HoloSliderUi;
@@ -26,6 +25,8 @@ import java.awt.Point;
 import java.awt.Polygon;
 import java.awt.event.FocusAdapter;
 import java.awt.event.FocusEvent;
+import java.awt.event.KeyAdapter;
+import java.awt.event.KeyEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
@@ -204,7 +205,8 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
     {
         //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
     }
-
+    
+    
     @SuppressWarnings("CallToPrintStackTrace")
     private Image loadImageAux(String filename)
     {
@@ -222,6 +224,31 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
         return null;
     }
     
+     private void playInternal()
+        {
+            if (!connected)
+            {
+                selectedPlaybackPlugin.connectToPlayer();
+                selectedPlaybackPlugin.skipTitle();
+                connected = true;
+            }
+            if (playing)
+            {
+                selectedPlaybackPlugin.pause();
+                playing = false;
+            }
+            else
+            {
+                selectedPlaybackPlugin.play();
+                playing = true;
+            }
+        }
+    
+    
+    
+    
+    
+    
         @Override
     public void mouseClicked(MouseEvent e)
     {
@@ -316,22 +343,7 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
             {
                 if(btnPlay.contains(p)&&btnPlay.contains(pp))
                 {
-                    if(!connected)
-                    {
-                        selectedPlaybackPlugin.connectToPlayer();
-                        selectedPlaybackPlugin.skipTitle();
-                        connected=true;
-                    }
-                    if (playing)
-                    {
-                        selectedPlaybackPlugin.pause();
-                        playing = false;
-                    }
-                    else
-                    {
-                        selectedPlaybackPlugin.play();
-                        playing = true;
-                    }
+                    playInternal();
                 }
                 else
                 {
@@ -427,6 +439,7 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
     }
     
     @Override
+    @SuppressWarnings("CallToPrintStackTrace")
     public void initializePlugin()
     {
         selectedPlaybackPlugin=IZPLApi.getCurrentPlaybackPlugin();
@@ -463,6 +476,7 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
     
     
     @Override
+    @SuppressWarnings("empty-statement")
     public void initializeUI()
     {
         @SuppressWarnings("null")
@@ -677,12 +691,30 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
         dockingBasePoint=new Point(ixb.get(0), ixb.get(1));
         addFocusListener(new FocusAdapter()
         {
+            private boolean nullrouteEvent=false;//HACKPART
             @Override
             public void focusGained(FocusEvent e)
             {
-                if (playlistEditUI.getWrapper().isVisible())
+                if(!nullrouteEvent)//HACKPART to keep mainwindow responsive to spacebar
                 {
-                    playlistEditUI.setVisibleAux(true);
+                    nullrouteEvent=true;
+                    if (playlistEditUI.getWrapper().isVisible())
+                    {
+                        playlistEditUI.setVisibleAux(true);
+                        setVisible(true);//HACKPART
+                    }
+                    //HACKPART\/
+                    new Thread(()->
+                    {
+                        try
+                        {
+                            Thread.sleep(10);
+                        }
+                        catch (InterruptedException ex)
+                        {
+                        }
+                        nullrouteEvent=false;
+                    }).start();
                 }
             }
             
@@ -697,6 +729,18 @@ public class IZplGUISkinnable extends JFrame implements IZPlGuiCommon, MouseList
         seekBar.setVisible(false);
         
         playlistEditUI.getWrapper().setLocation(getLocation().x + dockingBasePoint.x, getLocation().y + dockingBasePoint.y);
-        
+        addKeyListener(new KeyAdapter()
+        {
+
+            @Override
+            public void keyPressed(KeyEvent e)
+            {
+                if(e.getKeyCode()==KeyEvent.VK_SPACE)
+                {
+                    playInternal();
+                }
+            }
+            
+        });
     }
 }

+ 89 - 21
iZpl/src/main/java/de/nplusc/izc/iZpl/Main.java

@@ -21,6 +21,7 @@ import de.nplusc.izc.tools.baseTools.Messagers;
 import de.nplusc.izc.tools.baseTools.Tools;
 import de.schlichtherle.truezip.file.TFile;
 import de.schlichtherle.truezip.file.TFileReader;
+import java.awt.Desktop;
 import java.awt.EventQueue;
 import java.io.BufferedOutputStream;
 import java.io.BufferedReader;
@@ -164,11 +165,32 @@ public class Main extends javax.swing.JFrame
     {
         try
         {
+            
             processCommandLine(args);
             setupLogging();
+            
             String time = new Date(System.currentTimeMillis()).toString();
             System.out.println("IZPL-Loader:Bootstrapped at:" + time);
-            
+                        /* 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 | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex)
+            {
+                java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+            }
             
             if(firstrunmode)
             {
@@ -189,26 +211,7 @@ public class Main extends javax.swing.JFrame
             initializePlugins();
             System.out.println("Plugins initialized");
             //TODO:  GUI-Editor zum Erzeugen von iZpl-S
-            /* 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 | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex)
-            {
-                java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
-            }
+
             //</editor-fold>
             /* Create and display the form */
             
@@ -400,6 +403,15 @@ public class Main extends javax.swing.JFrame
                 .create("c"));
         options.addOptionGroup(modes);
         options.addOptionGroup(uimodes);
+        
+        if(Detectors.getSystemClassification()[0].equals("windows"))
+        {
+            options.addOption(OptionBuilder.withLongOpt("registerfileextensions")
+                .withDescription("Registers the FileExtensions. ")
+                .create());
+        }
+        
+        //--registerfileextensions
         CommandLine cl = parser.parse(options, args);
 
         if (cl.hasOption("i"))
@@ -415,6 +427,14 @@ public class Main extends javax.swing.JFrame
             filemode = true;
             file_path = cl.getOptionValue("file");
         }
+        if (cl.hasOption("registerfileextensions"))
+        {
+            registerFileExtensions();
+            quickQuit();
+        }
+        
+        
+        
         if (cl.hasOption("resume"))
         {
             if (filemode)
@@ -849,6 +869,54 @@ public class Main extends javax.swing.JFrame
         }
     }
 
+    private static void registerFileExtensions()
+    {
+        String extensionPath = (IZPLApi.APPDIR+File.separator+"bin"+File.separator+"iZplFEX.bat").replace("\\", "\\\\");
+        String iconMain=(IZPLApi.APPDIR+File.separator+"res"+File.separator+"izpl.ico").replace("\\", "\\\\");
+        String iconResume=(IZPLApi.APPDIR+File.separator+"res"+File.separator+"izplresume.ico").replace("\\", "\\\\");     
+        String regPatternPlayList="Windows Registry Editor Version 5.00\n" +
+        "\n" +
+        "[HKEY_CURRENT_USER\\Software\\Classes\\izplaylist.playlist\\shell\\open\\command]\n" +
+        "@=\""+extensionPath+" --file \\\"%1\\\"\"\n" +
+        "[HKEY_CURRENT_USER\\Software\\Classes\\.izpl]\n" +
+        "@=\"izplaylist.playlist\"\n"+
+        "[HKEY_CURRENT_USER\\izplaylist.playlist\\DefaultIcon]\n" +
+        "@=\""+iconMain+"\"";
+        
+        
+        String regPatternStateFile="Windows Registry Editor Version 5.00\n" +
+        "\n" +
+        "[HKEY_CURRENT_USER\\Software\\Classes\\izplaylist.resumefile\\shell\\open\\command]\n" +
+        "@=\""+extensionPath+" --resume \\\"%1\\\"\"\n" +
+        "[HKEY_CURRENT_USER\\Software\\Classes\\.izcont]\n" +
+        "@=\"izplaylist.resumefile\"\n"+
+        "[HKEY_CURRENT_USER\\Software\\Classes\\.izcontinue]\n" +
+        "@=\"izplaylist.resumefile\"\n"+
+        "[HKEY_CURRENT_USER\\resumefile\\DefaultIcon]\n" +
+        "@=\""+iconResume+"\"";
+        
+        try
+        {
+            new File(IZPLApi.APPDIR+File.separator+"res").mkdirs();
+            FileWriter fw = new FileWriter(new File(IZPLApi.APPDIR+File.separator+"res"+File.separator+"fileextizpl.reg"));
+            fw.write(regPatternPlayList);
+            fw.flush();
+            fw.close();
+            fw = new FileWriter(new File(IZPLApi.APPDIR+File.separator+"res"+File.separator+"fileextizcontinue.reg"));
+            fw.write(regPatternStateFile);
+            fw.flush();
+            fw.close();
+            Desktop.getDesktop().open(new File(IZPLApi.APPDIR+File.separator+"res"+File.separator+"fileextizpl.reg"));
+            Desktop.getDesktop().open(new File(IZPLApi.APPDIR+File.separator+"res"+File.separator+"fileextizcontinue.reg"));
+        }
+        catch (IOException ex)
+        {
+            ex.printStackTrace();
+        }
+    }
+    
+    
+    
     public static boolean isStandaloneGUI()
     {
         return useGUI;