public void updateView() {
		// Get the models for the combo boxes
		DefaultComboBoxModel<String> problemsModel = (DefaultComboBoxModel<String>) problemComboBox
				.getModel();
		DefaultComboBoxModel<String> languagesModel = (DefaultComboBoxModel<String>) languageComboBox
				.getModel();

		// Get problems and languages from RMI data
		RmiData socketData = new RmiData();
		ArrayList<Problem> problems = socketData.getProblems();
		ArrayList<Language> languages = socketData.getLanguages();

		// If there aren't any problems or languages added by the server
		if (problems.size() == 0 || languages.size() == 0) {
			// Disable all components except cancel button
			// We need the cancel button so user can go to the previous state
			btnSubmit.setEnabled(false);
			problemComboBox.setEnabled(false);
			languageComboBox.setEnabled(false);
			textArea.setEnabled(false);

			// Display a message for notifying the contestant about the issue.
			JOptionPane
					.showMessageDialog(
							null,
							"Contest Admin hasn't configured the contest yet. Click on Cancel then try again later.");
		}

		// Clear models
		problemsModel.removeAllElements();
		languagesModel.removeAllElements();

		// Fill models with data
		for (Problem p : problems)
			problemsModel.addElement(p.getProblemName());

		for (Language l : languages)
			languagesModel.addElement(l.getName());
	}