📄 direxploreritem.java
字号:
package SOMA.explorer;
import java.io.*;
import java.util.*;
/**
* Un direttorio rappresenta un menu.
*
* Siccome un direttorio puo' contenere altri direttori DirExplorerItem
* e' sottoclasse di ExplorerItem.
*
* Le operazioni di base fornite all'utente sono:
* <UL>
* <I><LI><Invio> </I>Visualizza il contenuto del direttorio (= <I>ls</I>)</LI>
* <I><LI>/ </I>Riferimento al direttorio radice.</LI>
* <I><LI>cd </I>Cambia direttorio.</LI>
* <I><LI>help </I>Ottiene aiuto su una voce del menu.</LI></UL>
*
* @author Livio Profiri
*/
public class DirExplorerItem extends ExplorerItem
{
/** @serial*/
private final Hashtable Items = new Hashtable();
/** @serial*/
private final List Index = Collections.synchronizedList(new ArrayList());
/** @serial*/
String DirectoryName;
static public final String UpperLevelDirectoryString = "..";
static public final String RootDirectoryString = "/";
static final int EndPosition = -1;
// root directory.
/** Costruttore che specifica il nome del direttorio. */
public DirExplorerItem( String DirectoryName )
{
this.DirectoryName = DirectoryName;
Syntax = "Directory";
addItem( "/", new ExplorerItem( "root directory" )
{
public Object Execute( Collection Parameters, PrintStream out )
{
return FindRootDirectory().Execute( Parameters, out );
}
});
addItem( "cd", new ChangeDirExplorerItem() );
addItem( "help", new HelpExplorerItem() );
/*
addItem( "get", new ExplorerItem( "item path" )
{
public Object Execute( Collection Parameters, PrintStream out )
{
return getItem( Parameters );
}
});*/
}
public String toString()
{
return "Directory: " + BuildPath();
}
/** Esegue il comando rappresentato da una stringa specificando il PrintStream di output.*/
public Object Execute( String ParametersLine, PrintStream out )
{
return Execute( StringToParameters( ParametersLine ), out );
}
/** Esegue il comando rappresentato da una stringa.*/
public Object Execute( String ParametersLine )
{
return Execute( StringToParameters( ParametersLine ) );
}
/** Converte una stringa contenente una sequenza di parametri
* in una Collection di singoli parametri.
*/
public Collection StringToParameters( String ParametersLine )
{
final String StringDelimiters = "\"'`"; // Elenco separatori di stringhe: " ' `
final String TokenDelimiters = " "; // Elenco separatori di items: scartati nella lettura
Collection Parameters = new Vector();
StringTokenizer stok = new StringTokenizer( ParametersLine, TokenDelimiters + StringDelimiters, true );
try
{
while( stok.hasMoreTokens() )
{
String Token = stok.nextToken();
if( (StringDelimiters.indexOf( Token ) != -1) ) //Se ho uno dei separatori di stringa
{
// Salto all'altro separatore
Parameters.add( stok.nextToken( Token ) );
//Scarto il token contenente il separatore e resetto l'insiseme dei separatori
stok.nextToken( TokenDelimiters + StringDelimiters );
}
else if( TokenDelimiters.indexOf( Token ) == -1 ) // Scarto gli spazi
Parameters.add( Token );
}
}
catch( NoSuchElementException e )
{} // Nessun problema: semplicemente
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -