public static String load(Component parent) {
		if (FileDialogs.hasFileAccess()) {
			URL url = ClassLoader.getSystemResource("circuits");
			String urlName = url.getFile().substring(1);

			if (FileDialogs.fc == null) {
				FileDialogs.fc = new JFileChooser(urlName);
			}
			FileDialogs.fc.setFileFilter(new TextFilter("cir"));

			int returnVal = FileDialogs.fc.showOpenDialog(parent);

			if (returnVal == 0) {
				try {
					File file = FileDialogs.fc.getSelectedFile();

					FileInputStream fr = new FileInputStream(file);
					InputStreamReader ir = new InputStreamReader(fr, "ISO-8859-1");
					BufferedReader in = new BufferedReader(ir);

					String input = in.readLine();
					String line;
					while ((line = in.readLine()) != null) {
						input = input + "\n" + line;
					}

					in.close();
					fr.close();

					return input;
				} catch (FileNotFoundException e) {
					JOptionPane.showMessageDialog(parent, "Error Loading File.\n" + e.getMessage(), "Error  FileDialogs.002", 0);
				} catch (IOException e) {
					JOptionPane.showMessageDialog(parent, "Error Loading File.\n" + e.getMessage(), "Error  FileDialogs.003", 0);
				}

			}

			return null;
		}
		if (FileDialogs.hasClipboardAccess()) {
			final JDialog dialog = new JDialog(JOptionPane.getFrameForComponent(parent), "Load", true);

			dialog.getContentPane().setLayout(new BorderLayout());

			JPanel pane = new JPanel(new BorderLayout());
			JLabel label = new JLabel("To Load paste contents of file here");

			label.setForeground(Color.black);

			final JTextArea loadarea = new JTextArea();
			loadarea.setEditable(true);
			loadarea.setPreferredSize(new Dimension(200, 300));

			JScrollPane scroller = new JScrollPane(loadarea);
			pane.add(scroller, "Center");

			dialog.getContentPane().add(label, "North");
			dialog.getContentPane().add(pane, "Center");

			JPanel buttonPane = new JPanel();
			buttonPane.setLayout(new FlowLayout(1));
			dialog.getContentPane().add(buttonPane, "South");

			JButton pasteButton = new JButton("Paste");
			buttonPane.add(pasteButton);
			pasteButton.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					loadarea.selectAll();
					loadarea.replaceSelection("");
					loadarea.paste();
				}
			});
			JButton okButton = new JButton("OK");
			dialog.getRootPane().setDefaultButton(okButton);
			buttonPane.add(okButton);
			okButton.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					dialog.setVisible(false);
				}
			});
			JButton cancelButton = new JButton("Cancel");
			dialog.getRootPane().setDefaultButton(cancelButton);
			buttonPane.add(cancelButton);
			cancelButton.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					dialog.setVisible(false);
					loadarea.selectAll();
					loadarea.replaceSelection("");
				}
			});
			dialog.setLocationRelativeTo(parent);
			dialog.pack();

			dialog.setVisible(true);

			loadarea.selectAll();
			return loadarea.getSelectedText();
		}

		JOptionPane.showMessageDialog(parent, "Insufficient privilages to load.\nSee Help-Loading and Saving or the Webpage for details of how to enable loading and saving.", "Loading and Saving Disabled", 2);

		return null;
	}