private void createUI() {
		final GSInsert _this = this; // Used for giving other classes a reference to this GSInsert object.

		/* Setup the main window frame. */
		mFrame.setTitle(TITLE + " " + VERSION + ((mConfig.getEdition().equalsIgnoreCase("")) ? "" : " - " + mConfig.getEdition()));
		mFrame.setMinimumSize(DIMENSION_MINFRAME);
		mFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mFrame.setLocationByPlatform(true);
		mFrame.getContentPane().setLayout(new BoxLayout(mFrame.getContentPane(), BoxLayout.PAGE_AXIS));

		/* Add all username panel components. */
		mUserPanel.setLayout(new BorderLayout(5, 0));
		mUserPanel.setMaximumSize(DIMENSION_PANEL);
		mSubUserPanel = new JPanel();
		mSubUserPanel.setMaximumSize(DIMENSION_AUTHPANEL);
		mUserLabel.setPreferredSize(DIMENSION_PREFLABEL);
		mUserTextField.setPreferredSize(DIMENSION_MAXAUTHFIELD);
		if(!mConfig.getUser().equalsIgnoreCase(""))
			mUserTextField.setText(mConfig.getUser());
		mSubUserPanel.add(mUserLabel);
		mSubUserPanel.add(mUserTextField);
		mUserPanel.add(mSubUserPanel, BorderLayout.WEST);
		
		/* Add all password panel components. */
		mPassPanel.setLayout(new BorderLayout(5, 0));
		mPassPanel.setMaximumSize(DIMENSION_PANEL);
		mSubPassPanel = new JPanel();
		mSubPassPanel.setMaximumSize(DIMENSION_AUTHPANEL);
		mPassLabel.setPreferredSize(DIMENSION_PREFLABEL);
		mPassField.setPreferredSize(DIMENSION_MAXAUTHFIELD);
		mSubPassPanel.add(mPassLabel);
		mSubPassPanel.add(mPassField);
		mPassPanel.add(mSubPassPanel, BorderLayout.WEST);

		/* Add all server panel components. */
		mServerPanel.setBorder(BORDER);
		mServerPanel.setLayout(new BorderLayout(5, 0));
		mServerPanel.setMaximumSize(DIMENSION_PANEL);
		mServerLabel.setPreferredSize(DIMENSION_PREFLABEL);
		mServerTextField.setMaximumSize(DIMENSION_MAXFIELD);
		mServerTextField.setPreferredSize(DIMENSION_MAXAUTHFIELD);
		mServerTextField.setToolTipText(TOOLTIP_SERVER);
		if(!mConfig.getServer().equalsIgnoreCase(""))
			mServerTextField.setText(mConfig.getServer());
		mServerButton.setPreferredSize(DIMENSION_MAXBUTTON);
		mServerButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				new Thread(new GetCapabilities(_this,
					mServerTextField.getText(),
					mUserTextField.getText(),
					mPassField.getText())
				).start();
			}
		});
		mServerPanel.add(mServerLabel, BorderLayout.WEST);
		mServerPanel.add(mServerTextField, BorderLayout.CENTER);
		mServerPanel.add(mServerButton, BorderLayout.EAST);
		
		/* Add all layer panel components. */
		mLayersPanel.setBorder(BORDER);
		mLayersPanel.setLayout(new BorderLayout(5, 0));
		mLayersPanel.setMaximumSize(DIMENSION_PANEL);
		mLayersLabel.setPreferredSize(DIMENSION_PREFLABEL);
		mLayersComboBox.setMaximumSize(DIMENSION_MAXFIELD);
		mLayersComboBox.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				mLayer = (String) mLayersComboBox.getSelectedItem();
				new Thread(new DescribeFeatureType(_this,
					mServerTextField.getText(),
					mUserTextField.getText(),
					mPassField.getText(),
					mLayer
				)).start();
			}
		});
		mLayersPanel.add(mLayersLabel, BorderLayout.WEST);
		mLayersPanel.add(mLayersComboBox, BorderLayout.CENTER);
		
		/* Setup the ScrollPane and the empty Fields panel. */
		mFieldsScrollPane.setBorder(null);
		mFieldsPanel.setLayout(new BoxLayout(mFieldsPanel, BoxLayout.PAGE_AXIS));
		
		/* Setup the Submit Button. */
		mSubmitButton.setPreferredSize(DIMENSION_MAXBUTTON);
		mSubmitButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				HashMap<String, String> attr = getAttributes();
				if(attr != null) {
					new Thread(new WfsInsert(_this,
						mServerTextField.getText(),
						mUserTextField.getText(),
						mPassField.getText(),
						mLayer,
						mLayerNamespace,
						attr,
						mFields
						)
					).start();
				}
			}
		});
		
		/* Add all panels to the window frame. */
		mFrame.add(mUserPanel);
		mFrame.add(mPassPanel);
		mFrame.add(mServerPanel);
		mFrame.add(mLayersPanel);
		mFrame.add(mFieldsScrollPane);	

		mFrame.pack();
		mFrame.setVisible(true);
	}