📄 snns.java
字号:
if( cont instanceof JScrollPane ){
JScrollPane sp = (JScrollPane)cont;
JViewport vp = sp.getViewport();
if( vp.getView() instanceof NetworkView ){
NetworkView nv = (NetworkView)vp.getView();
System.out.println("NetworkView["+nv.net_view_no+"]");
}
else System.out.println( sp.getViewport().getClass() );
}
else if( cont instanceof JTabbedPane )
System.out.println("Control panel");
else if( cont instanceof UnitDetailPanel ){
UnitDetailPanel u = (UnitDetailPanel)cont;
String text = "Unit details";
if( u.frame.isVisible() ) text += " shown";
else text += " hidden";
System.out.println( text );
}
else if( cont instanceof GraphPanel )
System.out.println("Error graph panel");
else System.out.println( f.getContentPane().getClass() );
}
else System.out.println( c.getClass() );
}*/
// this object modifies the windows menu
new WindowMenuItem(frame, mWindows);
desktop.add( frame );
if( visible ){
frame.setVisible( true );
frame.toFront();
try {
frame.setIcon(false);
frame.setSelected(true);
}
catch (java.beans.PropertyVetoException e) {
//System.out.println(frame.toString()+"coudn't get focused.");
showException( e );
}
}
}
/**
* Gives information about LookAndFeel the JavaNNS is using.
*
* @return <code>true</code> if using Swing (Metal) LookAndFeel
*/
public static boolean isMetalLookAndFeel() { return METAL_LOOK_AND_FEEL; }
private void showException( String message ){
showException( new Exception( message ) );
}
private void showException( Exception e ){ showException( e, this ); }
/**
* method shows the message of an exception in a message dialog
*
* @param the exception
*/
public void showException( Exception e, Object source ){
JOptionPane.showMessageDialog( this,
e.toString(),
"Error message",
JOptionPane.ERROR_MESSAGE );
if( pLog != null )
e.printStackTrace( new PrintStream( pLog.writer ) );
}
/**
* method returns the last active network view or null
*/
public NetworkView getLastSelectedView(){
if( last_view != null && last_view.frame.isSelected() )
return last_view;
else if( net_views.size() > 0 )
return (NetworkView)net_views.lastElement();
return null;
}
/**
* method returns the current NetworkViewSettings, that means either the
* settings of the currently active NetworkView, of the last created NetworkView
* or default settings
*
* @return the NetworkViewSettings
*/
public NetworkViewSettings getCurrentSettings(){
NetworkView view = getLastSelectedView();
if( view != null ) return view.settings;
return NetworkViewSettings.getDefaultSettings();
}
/**
* method asks the user whether an <code>LoaderAndSaver</code> object should
* be saved or not
*
* @param las the <code>LoaderAndSaver</code> object to save
* @return <code>false</code> if something went wrong or if the
* CANCEL_OPTION has been selected
*/
public boolean askForSaving( LoaderAndSaver las ){
boolean ok = true;
String text = "Save changes to "+ las.getLASName() + "?";
int choice = JOptionPane.showOptionDialog( this, text, "FileManager",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null, null, null );
if( choice == JOptionPane.YES_OPTION ){
try{
if( las.hasHomeFile() ) las.save();
else ok = fileManager.showSaveDialog( las );
}
catch( Exception e ){
showException( e );
ok = false;
}
}
else if( choice == JOptionPane.CANCEL_OPTION ) ok = false;
return ok;
}
/*------------------------------ private methods -----------------------------*/
/**
* Opens a frame for viewing the network with default settings
*/
private UIDisplayType getDefaultDisplayType() {
UIDisplayType dt = new UIDisplayType();
dt.position = new Point(0, 0);
dt.displayNo = net_views_count + 1;
dt.dimension = new Dimension(400, 300);
dt.settings = null;
return dt;
}
private void openNetworkView(){
openNetworkView( getDefaultDisplayType() );
}
/**
* Opens a frame for viewing the network.
*
* @param display type
*/
private void openNetworkView( UIDisplayType dt ) {
//System.out.println("Snns.openNetworkView");
NetworkView nv = new NetworkView( this, dt );
nv.addListener( this );
net_views.addElement( nv );
net_views_count++;
addInternalFrame( nv.frame, true );
}
/**
* method removes all network views and sets the network view counter to zero
*/
private void deleteNetworkViews(){
NetworkView view;
for( int i=net_views.size()-1; i>-1; i-- ){
view = (NetworkView)net_views.elementAt( i );
view.frame.dispose();
}
net_views_count = 0;
}
private void close(){
Vector las = new Vector();
if( network.contentChanged() ) las.add(network);
if( pLog.contentChanged() ) las.add(pLog);
Vector sets = patternSets.sets;
for( int i=0; i<sets.size(); i++ ){
PatternSet set = (PatternSet)sets.get(i);
if( set.contentChanged() ) las.add(set);
}
if( properties.contentChanged() ) las.add(properties);
if( las.size() > 0 ){
LoaderAndSaver[] lasar = new LoaderAndSaver[ las.size() ];
las.toArray(lasar);
if( !(new LASSaveDialog()).show( this, (LoaderAndSaver[])lasar ) ) return;
}
if(applet == null) System.exit(0);
else dispose();
}
/**
* Creates menu bar in the application main frame.
*/
private void setMenuBar() {
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// File menu
JMenu menu;
menu = new JMenu("File");
menu.setMnemonic(KeyEvent.VK_F);
menu.getAccessibleContext().setAccessibleDescription("File menu");
menuBar.add(menu);
mNew = new JMenuItem("New...", KeyEvent.VK_N);
mNew.setIcon(icons.getIcon("New16.gif"));
mNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK));
mNew.getAccessibleContext().setAccessibleDescription("Create new network");
mNew.addActionListener(this);
menu.add(mNew);
mOpen = new JMenuItem("Open...", KeyEvent.VK_O);
mOpen.setIcon(icons.getIcon("Open16.gif"));
mOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK));
mOpen.getAccessibleContext().setAccessibleDescription("Open file...");
mOpen.addActionListener(this);
menu.add(mOpen);
menu.addSeparator();
mClose = new JMenuItem("Close", KeyEvent.VK_C);
mClose.setIcon(icons.getIcon("empty16.gif"));
mClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, ActionEvent.CTRL_MASK));
mClose.getAccessibleContext().setAccessibleDescription("Close");
mClose.addActionListener(this);
menu.add(mClose);
mSave = new JMenuItem("Save", KeyEvent.VK_S);
mSave.setIcon(icons.getIcon("Save16.gif"));
mSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
mSave.getAccessibleContext().setAccessibleDescription("Save network");
mSave.addActionListener(this);
menu.add(mSave);
mSaveAs = new JMenuItem("Save as...", KeyEvent.VK_A);
mSaveAs.setIcon(icons.getIcon("SaveAs16.gif"));
mSaveAs.addActionListener(this);
menu.add(mSaveAs);
mSaveData = new JMenuItem("Save data...", KeyEvent.VK_D);
mSaveData.setIcon(icons.getIcon("empty16.gif"));
mSaveData.addActionListener(this);
menu.add(mSaveData);
menu.addSeparator();
mPrint = new JMenuItem("Print...", KeyEvent.VK_P);
mPrint.setIcon(icons.getIcon("Print16.gif"));
mPrint.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK));
mPrint.getAccessibleContext().setAccessibleDescription("Print");
mPrint.addActionListener(this);
menu.add(mPrint);
menu.addSeparator();
mExit = new JMenuItem("Exit", KeyEvent.VK_X);
mExit.setIcon(icons.getIcon("empty16.gif"));
mExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.CTRL_MASK));
mExit.getAccessibleContext().setAccessibleDescription("Exit");
mExit.addActionListener(this);
menu.add(mExit);
// Edit menu
JMenu mEdit = new JMenu("Edit");
mEdit.setMnemonic( KeyEvent.VK_E );
menuBar.add( mEdit );
mUndo = new JMenuItem("Undo", KeyEvent.VK_U);
mUndo.setIcon(icons.getIcon("Undo16.gif"));
mUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
mUndo.getAccessibleContext().setAccessibleDescription("Undo");
mUndo.setEnabled(false);
mEdit.add(mUndo);
mUndo.addActionListener(this);
mRedo = new JMenuItem("Redo", KeyEvent.VK_R);
mRedo.setIcon(icons.getIcon("Redo16.gif"));
mRedo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, ActionEvent.CTRL_MASK));
mRedo.getAccessibleContext().setAccessibleDescription("Redo");
mRedo.setEnabled(false);
mEdit.add(mRedo);
mRedo.addActionListener(this);
NetworkUndoRedo nur = new NetworkUndoRedo( this, 10 );
nur.addMenus(mUndo, mRedo);
mEdit.addSeparator();
mTop = new JMenuItem("Top Labels");
mTop.setIcon(icons.getIcon("empty16.gif"));
mTop.setEnabled( false );
mEdit.add( mTop );
mTop.addActionListener( this );
mBottom = new JMenuItem("Bottom Labels");
mBottom.setIcon(icons.getIcon("empty16.gif"));
mBottom.setEnabled( false );
mEdit.add( mBottom );
mBottom.addActionListener( this );
mEdit.addSeparator();
mEditUnits = new JMenuItem("Units Properties...");
mEditUnits.setIcon(icons.getIcon("unitProperties.gif"));
mEditUnits.setEnabled( false );
mEditUnits.addActionListener( this );
mEdit.add( mEditUnits );
// Submenu "Delete":
mDelete = new JMenu("Delete");
mDelete.setMnemonic(KeyEvent.VK_D);
mDelete.setIcon(icons.getIcon("Delete16.gif"));
mDelete.setEnabled( false );
mEdit.add( mDelete );
mDeleteUnits = new JMenuItem("Units");
mDeleteUnits.addActionListener( this );
mDelete.add( mDeleteUnits );
mDeleteLinks = new JMenuItem("Links");
mDeleteLinks.addActionListener( this );
mDelete.add( mDeleteLinks );
// View menu
menu = new JMenu("View");
menu.setMnemonic(KeyEvent.VK_V);
menu.getAccessibleContext().setAccessibleDescription("View menu");
menuBar.add(menu);
mNetwork = new JMenuItem("Network", KeyEvent.VK_N);
mNetwork.setIcon(icons.getIcon("network.gif"));
mNetwork.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK));
mNetwork.getAccessibleContext().setAccessibleDescription("Network window");
mNetwork.addActionListener(this);
menu.add(mNetwork);
mViewSettings = new JMenuItem("Display Settings", KeyEvent.VK_D);
mViewSettings.setIcon(icons.getIcon("viewSettings.gif"));
mViewSettings.setEnabled( false );
mViewSettings.addActionListener( this );
menu.add( mViewSettings );
/*m3DNetwork = new JMenuItem("3D-Network", KeyEvent.VK_3);
m3DNetwork.setIcon(new ImageIcon( cl.getResource("images/empty16.gif") ));
m3DNetwork.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, ActionEvent.CTRL_MASK));
m3DNetwork.getAccessibleContext().setAccessibleDescription("3D Network window");
m3DNetwork.addActionListener(this);
menu.add(m3DNetwork);
m3DNetwork.setEnabled(false);*/
menu.addSeparator();
mGraph = new JMenuItem("Error Graph", KeyEvent.VK_E);
mGraph.setIcon(icons.getIcon("errorGraph.gif"));
mGraph.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, ActionEvent.CTRL_MASK));
mGraph.getAccessibleContext().setAccessibleDescription("Error graph window");
mGraph.addActionListener(this);
menu.add(mGraph);
mWeights = new JMenuItem("Weights", KeyEvent.VK_W);
mWeights.setIcon(icons.getIcon("weight.gif"));
mWeights.getAccessibleContext().setAccessibleDescription("Weights");
mWeights.addActionListener(this);
menu.add(mWeights);
mProjection = new JMenuItem("Projection", KeyEvent.VK_P);
mProjection.setIcon(icons.getIcon("projection.gif"));
mProjection.getAccessibleContext().setAccessibleDescription("Projection");
mProjection.addActionListener( this );
mProjection.setEnabled( false );
menu.add( mProjection );
mKohonen = new JMenuItem("Kohonen", KeyEvent.VK_K);
mKohonen .setIcon(icons.getIcon("empty16.gif"));
mKohonen.getAccessibleContext().setAccessibleDescription("Kohonen");
mKohonen.addActionListener(this);
menu.add(mKohonen);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -