public Editor(final Skin skin) {
        if (skin == null) {
            throw new IllegalArgumentException();
        }
        this.skin = skin;

        setUpStringArrays();

        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                Editor.this.setTitle(GUIConstants.PROGRAM_TITLE + " - " + skin.getName());
                Editor.this.setIconImage(GUIConstants.PROGRAM_ICON);
                Editor.this.setJMenuBar(new EditorMenuBar(skin));
                Editor.this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
                Editor.this.addWindowListener(Editor.this);
                Editor.this.setBackground(GUIConstants.DEFAULT_BACKGROUND);
                Editor.this.setMinimumSize(GUIConstants.MIN_EDITOR_DIM);

                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                int width = (int) ((screenSize.getWidth() * (100 - GUIConstants.EDITOR_SIDEGAP_PERCENT)) / 100f);
                int height = (int) ((screenSize.getHeight() * (100 - GUIConstants.EDITOR_SIDEGAP_PERCENT)) / 100f);
                Editor.this.setSize(width, height);
                Editor.this.setLocationRelativeTo(null);

                create();
                setFocusToLeftMenu();

                Editor.this.setVisible(true);
            }
        });
    }