mainframe.java

来自「java语言开发的P2P流媒体系统」· Java 代码 · 共 1,252 行 · 第 1/3 页

JAVA
1,252
字号
			setTitle(Messages.getString("MainFrame.WINDOW_TITLE_SERVER", Radio.s2sName)); //$NON-NLS-1$
		}
		else
		{
			setTitle(Messages.getString("MainFrame.WINDOW_TITLE_CLIENT", Radio.s2sName)); //$NON-NLS-1$
		}
		
				
		// Icon
		ImageIcon icon = Icon.getImageIcon(s2sSmallIcon);
		if (icon != null)
		{
			setIconImage(icon.getImage());
		}
		
			
		// Men黶
		
		MenuInformationenAnzeigen.setEnabled(false);
		//MenuBandbreiteSetzen.setEnabled(false);
		
		MenuBar.add(MenuFile);
		//MenuFile.add(MenuYellowPages);					//Show the Stations
		MenuFile.add(MenuInformationenAnzeigen);  			//Display Verbose Information	
		MenuFile.addSeparator();
		MenuFile.add(MenuLog);
		MenuFile.add(MenuLogAs);
		MenuFile.add(MenuLogLoeschen);						//Clear the Log
		MenuFile.addSeparator();
		MenuFile.add(MenuBeenden);							//Exit
		
		MenuBar.add(MenuMedia);
		MenuMedia.add(MenuLaunchIntegratedPlayer);			//Internal Player
		MenuMedia.add(MenuMediaPlayerStarten);				//External Player
		MenuMedia.add(MenuRecordStream);
		
		MenuBar.add(MenuEinstellungen);						//Settings
		MenuEinstellungen.add(MenuOptions);
		MenuEinstellungen.addSeparator();
		//MenuEinstellungen.add(MenuBandbreiteSetzen);		//Set the upload bandwidth
		MenuEinstellungen.add(MenuDebugNachrichtenAnzeigen);//Show Debug Messages
								
		MenuBar.add(MenuHilfe);								//Help	
		MenuHilfe.add(MenuHomepageBesuchen);				//Visit the homepage
		MenuHilfe.addSeparator();
		MenuHilfe.add(MenuInfo);							//About P2PRadio
		
		setJMenuBar(MenuBar);
		
		
		// Anzeigeelemente
		
		GridBagLayout layout = new GridBagLayout();
		LabelsPanel = new JPanel(layout);
		InputPanel = new JPanel(layout);
		
		GridBagConstraints left = new GridBagConstraints();
		//left.weightx = 1.0;
		left.gridwidth = GridBagConstraints.RELATIVE;
		left.anchor = GridBagConstraints.EAST;
		left.insets = new Insets(0, 0, 0, 5);

		GridBagConstraints right = new GridBagConstraints();
		right.fill = GridBagConstraints.HORIZONTAL;
		right.weightx = 1.0;
		right.gridwidth = GridBagConstraints.REMAINDER;
		
		GridBagConstraints center = new GridBagConstraints();
		center.gridy = GridBagConstraints.RELATIVE;
		center.gridx = 1;
		center.insets = new Insets (0, 0, 0, 180);
		//center.anchor = GridBagConstraints.CENTER;
		
		messages.setFont(LabelStationContent.getFont());
		messages.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
		
		Font bold = LabelStation.getFont().deriveFont(Font.BOLD, LabelStation.getFont().getSize2D() + 2);
		LabelStation.setFont(bold);
		LabelSong.setFont(bold);
		LabelStream.setFont(bold);
		//LabelLag.setFont(bold);
		LabelBandwidth.setFont(bold);
		LabelServerUptime.setFont(bold);
		
		Font plain = LabelStationContent.getFont().deriveFont(LabelStation.getFont().getSize2D() + 2);
		LabelStationContent.setFont(plain);
		LabelSongContent.setFont(plain);
		LabelStreamContent.setFont(plain);
		//LabelLagContent.setFont(plain);
		LabelBandwidthContent.setFont(plain);
		LabelServerUptimeContent.setFont(plain);
		
		Font input = LabelStationContent.getFont().deriveFont(LabelStation.getFont().getSize2D() + 2);
		//urlInputLabel.setFont(input);
		//urlInput.setFont(input);
		button1.setFont(plain);
		button2.setFont(plain);
		
		LabelsPanel.add(LabelStation);
		layout.setConstraints(LabelStation, left);
		
		LabelsPanel.add(LabelStationContent);
		layout.setConstraints(LabelStationContent, right);

		LabelsPanel.add(LabelSong);
		layout.setConstraints(LabelSong, left);

		LabelsPanel.add(LabelSongContent);
		layout.setConstraints(LabelSongContent, right);
		
		LabelsPanel.add(LabelStream);
		layout.setConstraints(LabelStream, left);
		
		LabelsPanel.add(LabelStreamContent);
		layout.setConstraints(LabelStreamContent, right);
		
		LabelsPanel.add(LabelBandwidth);
		layout.setConstraints(LabelBandwidth, left);
		
		LabelsPanel.add(LabelBandwidthContent);
		layout.setConstraints(LabelBandwidthContent, right);
		
		
		//LabelsPanel.add(LabelLag);
		//layout.setConstraints(LabelLag, left);
		
		//LabelsPanel.add(LabelLagContent);
		//layout.setConstraints(LabelLagContent, right);
		
		LabelsPanel.add(LabelServerUptime);
		layout.setConstraints(LabelServerUptime, left);
		
		LabelsPanel.add(LabelServerUptimeContent);
		layout.setConstraints(LabelServerUptimeContent, right);
		
		int borderSize = 7;
		LabelsPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize), BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize))));
		//InputPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize), BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(borderSize, borderSize, borderSize, borderSize))));
		
		InputPanel.add(urlInputLabel);
		layout.setConstraints(urlInputLabel, left);
		
		InputPanel.add(urlInput);
		layout.setConstraints(urlInput, right);
		
		InputPanel.add(button1);
		layout.setConstraints(button1, center);
		
		InputPanel.add(button2);
		layout.setConstraints(button2, center);
		
		//System.out.println("max" + volumeSlider.getMaximumSize() + "pre" + volumeSlider.getPreferredSize() + "min" + volumeSlider.getMinimumSize());
		volumeSlider.setPreferredSize(new Dimension(100, 24));
		//volumeSlider.setPaintTicks(true);
		JPanel volumePanel = new JPanel();
		JLabel lvolume = new JLabel(Messages.getString("MainFrame.VOLUME"));
		volumePanel.add(lvolume);
		volumePanel.add(volumeSlider);
		InputPanel.add(volumePanel);
		layout.setConstraints(volumePanel, center);
		//InputPanel.add(lvolume);
		//InputPanel.add(volumeSlider);
		//layout.setConstraints(volumeSlider, left);
		//layout.setConstraints(volumeSlider, right);
		
		TopPanel = new JPanel(new BorderLayout());
		TopPanel.add(LabelsPanel, BorderLayout.CENTER);
		TopPanel.add(InputPanel, BorderLayout.SOUTH);
			
		messages.setEditable(false);
		messagesPane.setPreferredSize(new Dimension(400, 200));
		
		MainPanel.add(TopPanel, BorderLayout.NORTH);
		MainPanel.add(messagesPane, BorderLayout.CENTER);
		tabbedPane.addTab(Messages.getString("MainFrame.MAIN_PANEL"),MainPanel);
		
		getContentPane().add(tabbedPane, BorderLayout.CENTER);	
		volumeSlider.addChangeListener(new ChangeListener()
		{
			public void stateChanged(ChangeEvent e) {
				JSlider source = (JSlider)e.getSource();
				if (networkComponents != null)
				{
					networkComponents.setPlayerGain((double)source.getValue() / (double) VOLUME_SLIDER_MAX);
				}
			}
		});
		
		MenuRecordStream.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				new RecordThread().start();
			}
		});
		MenuLogAs.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						//Create a file chooser
						final JFileChooser fc = new JFileChooser();
						//In response to a button click:
						int returnVal = fc.showSaveDialog(selfReference);
						if (returnVal == JFileChooser.APPROVE_OPTION) 
						{
				            File file = fc.getSelectedFile();
				            String logName = file.getAbsolutePath();
				    		try
				    		{
				    			Handler logfileHandler = new FileLogHandler(logName);
				    			logfileHandler.setFilter(selfReference);
				    			logfileHandler.setFormatter(new LogFormatter());
				   				Logger.getLogger().addHandler(logfileHandler);
				   			}
				    		catch (IOException error)
				    		{
				    				//exit(Messages.getString("Radio.INVALID_LOGFILE_NAME"), noGUI); //$NON-NLS-1$
				    		}
				    		Logger.info("MainFrame","MainFrame.OUTPUTTING_LOG", logName);

				        } else {
				           // log.append("Open command cancelled by user." + newline);
				        }


					}
				});
		MenuLog.addActionListener(new ActionListener()
				{
					public void actionPerformed(ActionEvent e)
					{
						Radio.logByDate(selfReference);
					}
				});
		// ActionListener f黵 die Men黶
	
		MenuYellowPages.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				BrowserLauncher.startBrowserExtended("http://" + YellowPages.YP_HOST + YellowPages.YP_DIR, MainFrame.this); //$NON-NLS-1$
			}
		});
		
		MenuLaunchIntegratedPlayer.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent arg0) {
				Radio.playpause(networkComponents, selfReference);
			}
		});
		MenuMediaPlayerStarten.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				HttpPlayer httpPlayer = null;
				if (networkComponents != null)
					httpPlayer = networkComponents.getHttpPlayer();
				if (httpPlayer != null)
				{
					new MediaPlayerLauncher(peer.getListenBuffer(), httpPlayer).start();
				}
			}
		}); 		

		MenuInformationenAnzeigen.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				String webAddress = "http://localhost:" + (peer.getSocketAddress().getPort() + Peer.WEBINTERFACE_PORT_OFFSET) + "/"; //$NON-NLS-1$ //$NON-NLS-2$
				BrowserLauncher.startBrowserExtended(webAddress, MainFrame.this);
			}
		});

		MenuLogLoeschen.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				messages.setText(null);
			}
		}); 		

		MenuBeenden.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				exit();
			}
		});

		MenuDebugNachrichtenAnzeigen.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				Radio.displayDebugMessages = MenuDebugNachrichtenAnzeigen.isSelected();
				String[] xdebug = {"general", "logging", "displaydebug", SettingsXML.FALSE };
				if (MenuDebugNachrichtenAnzeigen.isSelected())
					xdebug[3] = SettingsXML.TRUE;
				xml.overwrite(xdebug);
				xml.flush();
			}
		}); 		
		MenuOptions.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				MenuOptions.setEnabled(false);
				optionsPanel = new OptionsPanel(selfReference);
				tabbedPane.addTab(Messages.getString("MainFrame.OPTIONS_PANEL"), optionsPanel);
				tabbedPane.setSelectedComponent(optionsPanel);
			}
		}); 		
		/*
		MenuBandbreiteSetzen.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{ 
				Object maxUploadBandwidthString = JOptionPane.showInputDialog(MainFrame.this, Messages.getString("RadioGUI.ENTER_BANDWIDTH_LIMIT", new Object[]{Radio.Name, new Integer(Peer.MAX_NUMBER_OF_CHILDREN)}), Messages.getString("RadioGUI.ENTER_BANDWIDTH_LIMIT_TITLE"), JOptionPane.QUESTION_MESSAGE, null, null, Double.toString(maxUploadBandwidth)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
				
				if (maxUploadBandwidthString == null)
				{
					// Benutzer hat das Fenster geschlossen
					return;
				}
				String[] tree = {"network", "maxupload", (String)maxUploadBandwidthString};
				xml.overwrite(tree);
				xml.flush();
				int maxUploadBandwidth = 0;
				
				try
				{
					maxUploadBandwidth = Integer.parseInt((String)maxUploadBandwidthString);
				}
				catch (NumberFormatException exception)
				{
					JOptionPane.showMessageDialog(MainFrame.this, Messages.getString("RadioGUI.INVALID_BANDWIDTH_LIMIT"), Messages.getString("GENERAL_ERROR"), JOptionPane.ERROR_MESSAGE, null); //$NON-NLS-1$ //$NON-NLS-2$
				}
				maxUploadBandwidthSet = true;
				if (maxUploadBandwidth != 0)
				{
					Logger.info("MainFrame","MainFrame.BANDWIDTH_LIMIT_SET_TO", new Integer(maxUploadBandwidth));
					if (peer != null)
					{
						peer.setMaxUploadBandwidth(maxUploadBandwidth);
					}
				}	
			}
		}); 	*/	
		
		MenuHomepageBesuchen.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				BrowserLauncher.startBrowserExtended(Radio.HOMEPAGE, MainFrame.this);
			}
		});
		
		MenuInfo.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				
				AboutPanel = new JPanel();
				BoxLayout aboutLayout = new BoxLayout(AboutPanel, BoxLayout.PAGE_AXIS);
				AboutPanel.setLayout(aboutLayout);
				JTabbedPane aboutPane = new JTabbedPane();
				JPanel aboutP2PRadio = new JPanel();
				BoxLayout aboutP2PRadioLayout =  new BoxLayout(aboutP2PRadio, BoxLayout.PAGE_AXIS);
				aboutP2PRadio.setLayout(aboutP2PRadioLayout);
				JLabel p2prMessage = new JLabel(Messages.getString("MainFrame.ABOUT_P2PRADIO_MESSAGE", new String[]{Radio.Name, Radio.Version}), Icon.getImageIcon(p2pradioIcon), JLabel.LEFT);
				aboutP2PRadio.add(p2prMessage);
				
				JPanel aboutStream2Stream = new JPanel();
				BoxLayout aboutS2SLayout =  new BoxLayout(aboutStream2Stream, BoxLayout.PAGE_AXIS);
				aboutStream2Stream.setLayout(aboutS2SLayout);
				JLabel s2sMessage = new JLabel(Messages.getString("MainFrame.ABOUT_STREAM2STREAM_MESSAGE", new String[]{Radio.s2sName, Radio.s2sVersion, Radio.s2sHyphenName, "" + Radio.networkVersion}), Icon.getImageIcon(s2sIcon), JLabel.LEFT);
				aboutStream2Stream.add(s2sMessage);
				
				JPanel aboutNDT = new JPanel();
				BoxLayout aboutNDTLayout =  new BoxLayout(aboutNDT, BoxLayout.PAGE_AXIS);
				aboutNDT.setLayout(aboutNDTLayout);
				JLabel ndtMessage = new JLabel(Messages.getString("MainFrame.ABOUT_NDT"));
				aboutNDT.add(ndtMessage);
				
				JPanel aboutjlGui = new JPanel();
				BoxLayout aboutjlLayout = new BoxLayout(aboutjlGui, BoxLayout.PAGE_AXIS);
				aboutjlGui.setLayout(aboutjlLayout);
				JLabel jlGuiPicture = new JLabel(Icon.getImageIcon("jlgui.GIF"));
				JLabel jlGuiMessage = new JLabel(Messages.getString("MainFrame.ABOUT_JLGUI_MESSAGE"));
				
				aboutjlGui.add(jlGuiPicture);
				aboutjlGui.add(jlGuiMessage);
				
				//JOptionPane.showMessageDialog(aboutP2PRadio, Messages.getString("MainFrame.ABOUT_MESSAGE", new String[]{Radio.Name, Radio.Version}), Messages.getString("MainFrame.ABOUT_TITLE", Radio.Name), JOptionPane.INFORMATION_MESSAGE, Icon.getImageIcon(p2pradioIcon)); //$NON-NLS-1$ //$NON-NLS-2$
				aboutPane.addTab(Messages.getString("MainFrame.ABOUT_STREAM2STREAM_TITLE", Radio.s2sName), aboutStream2Stream);
				aboutPane.addTab(Messages.getString("MainFrame.ABOUT_P2PRADIO_TITLE", Radio.Name), aboutP2PRadio);
				aboutPane.addTab(Messages.getString("MainFrame.ABOUT_NDT_TITLE"), aboutNDT);
				aboutPane.addTab(Messages.getString("MainFrame.ABOUT_JLGUI_TITLE"), aboutjlGui);
				AboutPanel.add(aboutPane);
				
				JButton OK = new JButton(Messages.getString("MainFrame.ABOUT_OK"));
				OK.addActionListener(new ActionListener()
						{
							public void actionPerformed(ActionEvent e)
							{
								tabbedPane.remove(AboutPanel);
								MenuInfo.setEnabled(true);
							}
						});
				AboutPanel.add(OK);
				tabbedPane.addTab(Messages.getString("MainFrame.ABOUT_TITLE"), AboutPanel);
				tabbedPane.setSelectedComponent(AboutPanel);
				MenuInfo.setEnabled(false);
			}
		});
		
		stationPanel = new StationPanel(this);
		tabbedPane.addTab(Messages.getString("MainFrame.STATION_PANEL"), stationPanel);
		if (!isServer && !test)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?