Questa Applet permette all'utente di scegliere l'applicazione da utilizzare.

Registrato.gif - 136208 Bytes
Cliccare sull'immagine per ingrandire.

Applicazioni.java:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.io.*;
import java.lang.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Enumeration;
import java.util.StringTokenizer;
import java.util.Vector;

public class Applicazioni extends Applet {
Button[] button=new Button[3];
TextField[] textField=new TextField[3];
TextArea[] textArea=new TextArea[3];
Vector v = new Vector();
Panel p= new Panel();
int PrimoElementoVisualizzato, UltimoElemento=0;
int SCROOLBARS_VERTICAL_ONLY=1;

  public void init() {

Label label;

p.setLayout(null);
p.setBounds(0,0,680,220);

label = new Label("NOME:");
label.setBounds(10,2,90,15);
p.add(label);

label = new Label("DESCRIZIONE:");
label.setBounds(110,2,440,15);
p.add(label);
PrimoElementoVisualizzato=1;

for (int i=0;i<3;i++) { textField[i] = new TextField("");
textField[i].setEditable(false);
textField[i].setBounds(10,30*(i+1),90,30);
p.add(textField[i]);

textArea[i] = new TextArea(" ",10,55,SCROOLBARS_VERTICAL_ONLY);
textArea[i].setEditable(false);
textArea[i].setBounds(110,30*(i+1),420,30);
p.add(textArea[i]);

button[i]=new Button (" ");
button[i].setBounds(540,30*(i+1)+5,100,20);
p.add(button[i]);
}

Carica();
// Aggiungo la gestione dello Scrollbar alla applet rappresentata
Scrollbar vscroll = new Scrollbar(Scrollbar.VERTICAL,1,1,1,UltimoElemento-1);
vscroll.setBounds(665,30,15,90);
vscroll.addAdjustmentListener(new GestoreScrolling());
p.add(vscroll);
add(p);
// Visualizzo l'applet
Visualizza(PrimoElementoVisualizzato);
repaint();
  }

/********************************************************************
Questa funzione legge da un file della linee di testo, indicanti quali applicazioni sono disponibili sul server e dove esse si trovano, non assegnando però loro un particolare significato, e limitandosi a caricarne il contenuto in memoria.
Tale modalità di gestione permette al gestore del server di modificare con facilità l'elenco delle applicazioni, e presuppone che, al variare del numero e del tipo di applicazioni, non si debba ricompilare l'intera Applet.
********************************************************************/

  void Carica() {

try { URL url = new URL(getCodeBase().toString() + "Applicazioni.txt");
BufferedReader FileInput = new BufferedReader(new InputStreamReader(url.openStream()));

String string = FileInput.readLine();
while (string != null) { v.addElement(string);
string = FileInput.readLine();
}
UltimoElemento=v.size();
}
catch (MalformedURLException e) { System.out.println(e);}
catch (IOException e) { System.out.println(e);}
  }

/********************************************************************
Tale funzione opera una analisi sulle linee caricate in memoria.
Scandendone, una ad una, ricerca la linea fornita come parametro di ingresso, ed elabora le 3 successive estrapolandone per ognuna 4 valori indicanti rispettivamente :
1) il nome dell'applicazine;
2) una breve descrizione;
3) il nome del file;
4) il direttorio in cui si trova.
Tali valori poi saranno utilizzati a loro volta da un'altra funzione e rappresentati a video.
********************************************************************/

  void Visualizza(int Primo) {

for (int i=0; i < v.size();i++) { StringTokenizer str = new StringTokenizer(v.elementAt(i).toString(), "|");

if (((i+1)==Primo)||((i+1)==Primo+1)||((i+1)==Primo+2)) {
textField[(i+1)-Primo].setText(str.nextToken());
textArea[(i+1)-Primo].setText(str.nextToken());
button[(i+1)-Primo].setLabel (str.nextToken());
button[(i+1)-Primo].addActionListener(new GestoreBottone());
}
}
  }

/********************************************************************
Quando viene utilizzato lo scroller, i dati debbono essere aggiornati. Di questo per l'appunto si occupa questa classe.
********************************************************************/

class GestoreScrolling implements AdjustmentListener {
  public void adjustmentValueChanged(AdjustmentEvent e) {

PrimoElementoVisualizzato=e.getValue();
Visualizza(PrimoElementoVisualizzato);
  }
}

/********************************************************************
Ogni volta che un bottone viene premuto la classe intercetta l'evento e da luogo ad una particolare azione. Nel caso specifico si tratta di aprire un particolare pagina WEB del server a seconda del bottone premuto.
********************************************************************/

 class GestoreBottone implements ActionListener {
  public void actionPerformed(ActionEvent evt) {

String Nome,Descrizione,Pulsante,Direttorio;
String Comando=evt.getActionCommand();
try { for (int i=PrimoElementoVisualizzato-1; i < PrimoElementoVisualizzato+2; i++) { StringTokenizer str = new StringTokenizer(v.elementAt(i).toString(), "|");

Nome=str.nextToken();
Descrizione=str.nextToken();
Pulsante=str.nextToken();
Direttorio=str.nextToken();

if (Comando.equals(Pulsante)) { AppletContext context = getAppletContext();
System.out.println(getCodeBase().toString()+"Applicazioni/"+Direttorio+'/'+Nome+".html");
URL u = new URL(getCodeBase().toString()+"Applicazioni/"+Direttorio+'/'+Nome+".html");
context.showDocument(u);
break;
}
}
} catch (MalformedURLException e) { System.out.println(e); }
  }
 }

}

b6.gif - 3872 Bytes