package de.jgsoftwares.guiserverpanel.frames;

import com.github.dockerjava.api.command.InspectContainerResponse;
import static de.jgsoftwares.guiserverpanel.dao.dockerclient.dockerClient;
import java.awt.event.MouseAdapter;
import javax.swing.tree.DefaultMutableTreeNode;
import java.io.*;
import java.util.HashMap;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;


public class MainPanel extends javax.swing.JFrame {

    
    //
    // JTree jTree1
    public static DefaultMutableTreeNode rootNode;

    public static DefaultMutableTreeNode dockerimages;
    public static DefaultMutableTreeNode dockercontainers;
 
    
    public static MouseAdapter ma;
    //

    Process process;
    BufferedReader reader;
    
    HashMap dockercontainerhashmap;

    /**
     * Creates new form MainPanel
     */
    public MainPanel() {
    
              
        dockercontainerhashmap = new HashMap();
        
        rootNode = new DefaultMutableTreeNode("Docker Client");
        dockerimages = new DefaultMutableTreeNode("Images");
        dockercontainers = new DefaultMutableTreeNode("Containers");
        initComponents();  
        
        
        
        //this.pack();
        
        
    
    }

    /**
     * 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() {

        jToolBar1 = new javax.swing.JToolBar();
        jComboBox1 = new javax.swing.JComboBox<>();
        jButton2 = new javax.swing.JButton();
        jSplitPane1 = new javax.swing.JSplitPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTree1 = new javax.swing.JTree(rootNode);
        jTabbedPane1 = new javax.swing.JTabbedPane();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Docker Panel - Host only");

        jToolBar1.setRollover(true);

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "NimROD", "Nimbus", "Metal" }));
        jComboBox1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jComboBox1ActionPerformed(evt);
            }
        });
        jToolBar1.add(jComboBox1);

        jButton2.setText("help");
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        jToolBar1.add(jButton2);

        getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START);

        //jTree1 = new JTree(rootNode);

        rootNode.add(dockercontainers);
        rootNode.add(dockerimages);
        jTree1.addTreeExpansionListener(new javax.swing.event.TreeExpansionListener() {
            public void treeExpanded(javax.swing.event.TreeExpansionEvent evt) {
                jTree1TreeExpanded(evt);
            }
            public void treeCollapsed(javax.swing.event.TreeExpansionEvent evt) {
            }
        });
        jTree1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTree1MouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTree1);

        jSplitPane1.setLeftComponent(jScrollPane1);

        //de.jgsoftwares.guiserverpanel.frames.DNSPanel dnspanel = new de.jgsoftwares.guiserverpanel.frames.DNSPanel();

        de.jgsoftwares.guiserverpanel.frames.OpenWrt openwrt = new de.jgsoftwares.guiserverpanel.frames.OpenWrt();
        de.jgsoftwares.guiserverpanel.frames.Databases databases = new de.jgsoftwares.guiserverpanel.frames.Databases();
        de.jgsoftwares.guiserverpanel.frames.Docker dockerpanel = new de.jgsoftwares.guiserverpanel.frames.Docker();

        de.jgsoftwares.guiserverpanel.frames.ConfigPanel configpanel = new de.jgsoftwares.guiserverpanel.frames.ConfigPanel();

        de.jgsoftwares.guiserverpanel.frames.JRemoteDesktop jremotepanel = new de.jgsoftwares.guiserverpanel.frames.JRemoteDesktop();

        // Config Panel
        jTabbedPane1.add(configpanel, "Config Panel");

        // Docker Panel
        jTabbedPane1.add(dockerpanel, "Docker Panel");

        // OpenWrt Panel
        jTabbedPane1.add(openwrt, "OpenWrt2305");

        // Databases - DerbyDB - H2 - MYSql
        jTabbedPane1.add(databases, "Databases");

        // DNS Server Panel
        //jTabbedPane1.add(dnspanel, "DNS Panel");

        //JRemoteDesktop jremotedesktop = new JRemoteDesktop();
        jTabbedPane1.add(jremotepanel, "JRemoteDesktop");

        Landingpage landingpage = new Landingpage();
        jTabbedPane1.add(landingpage, "Landingapge");

        LanServerTCP lanservertcp = new LanServerTCP();
        jTabbedPane1.add(lanservertcp, "LanServerTCP");

        //Ebay ebaypanel = new Ebay();
        //jTabbedPane1.add(ebaypanel, "Ebay");

        jSplitPane1.setRightComponent(jTabbedPane1);

        getContentPane().add(jSplitPane1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

 
    
    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
        // TODO add your handling code here:
        
        String selectedLookAndFeel = (String) jComboBox1.getSelectedItem();
        
        de.jgsoftwares.guiserverpanel.config.LookAndFeel lookandfeel = new de.jgsoftwares.guiserverpanel.config.LookAndFeel();
        
        switch (selectedLookAndFeel) {
            case "NimROD":
                lookandfeel.setNimRODLookAndFeel();
                break;
            case "Nimbus":
                lookandfeel.setNimbusLookAndFeel();
                break;
            case "Metal":
                lookandfeel.setMetalLookAndFeel();
                break;
            default:
                break;
        }
       
    }//GEN-LAST:event_jComboBox1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
        
        JFrame helpframe = new JFrame("Help Docker ");
        
        JEditorPane htmlPane = new JEditorPane();
        String description = ""
                + "<html>"
                + "<body>"
                + "<tr>"
                + "<p>Docker compose</p>" + "</br>"
                + "<p>Docker compose files are available on </p>" + "</br>"
                + "<p>http://demogitjava.ddns.net:8000/docker/compose-files/</p>" + "</br>"
                + "<p>to run the composefile donwload the compose file to your device </p>" + "</br>"
                + "<p>run command </p>" + "</br>"
                + "<p>docker compose up -d --build</p>" + "</br>"
                + "</br>"
                + "<p>repository on </p>" + "</br>"
                + "<p>https://hub.docker.com/search?q=jgsoftwares</p>" + "</br>"
                + "</body></html>";
                htmlPane.setContentType("text/html");
                htmlPane.setText(description);
                //System.out.println(htmlPane.getText());
               
        helpframe.add(htmlPane);        
        
        helpframe.setSize(600,400);
        helpframe.setVisible(true);
    }//GEN-LAST:event_jButton2ActionPerformed

    private void jTree1TreeExpanded(javax.swing.event.TreeExpansionEvent evt) {//GEN-FIRST:event_jTree1TreeExpanded
            // TODO add your handling code here:
             int j = jTree1.getRowCount();
        int i = 0;
        while(i < j) {
            jTree1.expandRow(i);
            i += 1;
            j = jTree1.getRowCount();
        }
    }//GEN-LAST:event_jTree1TreeExpanded

    private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTree1MouseClicked
        // TODO add your handling code here:
         if (SwingUtilities.isRightMouseButton(evt)) {

        int row = jTree1.getClosestRowForLocation(evt.getX(), evt.getY());
        jTree1.setSelectionRow(row);
       
        rootNode = (DefaultMutableTreeNode)
                       jTree1.getLastSelectedPathComponent();
                if (rootNode == null) return;
                Object nodeInfo = rootNode.getUserObject();
              
                
                // init String 
                // remove in try catch block the /[ and ] value
                String stdockerclient = null;
                try
                {
                      String stname = String.valueOf(nodeInfo);
                // remove /[ ] over String anem
                
                   // String is now without the [
                String stname0 = stname.toString();
                String strrepeace1 = stname0.replace("[", "");
                
                // String is now without the ]
                String stname1 = strrepeace1;
                String strrepeace2 = stname1.replace("]", "");
                
                String stname2 = strrepeace2.toString();
                String strrepeace3 = stname2.replace("/", "");
                
                
                stdockerclient = strrepeace3.toString();
                
                
                System.out.print("der name ist " + stdockerclient + "\n");
                } catch(Exception e)
                {
                    System.out.print("Fehler " + e); 
                }
                
                
                
                
                
                // load JFrame to display String
                de.jgsoftwares.guiserverpanel.frames.dockerclient.DCPopUpMenu dcpopjframe = new de.jgsoftwares.guiserverpanel.frames.dockerclient.DCPopUpMenu();
               
                // add string form jTree to jLabel1
                dcpopjframe.jLabel1.setText("" + stdockerclient.toString());
                
              
                
                dcpopjframe.setVisible(true);
                dcpopjframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                dcpopjframe.pack();
                
                //popup.show();
       
       // System.out.print("row is " + row + "\n");
        
        //popupMenu.show(e.getComponent(), e.getX(), e.getY());
    }
    }//GEN-LAST:event_jTree1MouseClicked

 

 
  


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton2;
    private javax.swing.JComboBox<String> jComboBox1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSplitPane jSplitPane1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JToolBar jToolBar1;
    public javax.swing.JTree jTree1;
    // End of variables declaration//GEN-END:variables
}
