Changeset e716f9e for installer/java


Ignore:
Timestamp:
Apr 10, 2004 11:55:25 AM (16 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
fbddb24
Parents:
51c49d7c
git-author:
shendaras <shendaras> (04/10/04 11:55:25)
git-committer:
zzz <zzz@…> (04/10/04 11:55:25)
Message:

format (shendaras)

Location:
installer/java/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • installer/java/src/CliInstall.java

    r51c49d7c re716f9e  
     1
     2
    13import java.io.BufferedReader;
    24import java.io.IOException;
     
    810    private BufferedReader _in;
    911    private PrintStream _out;
    10    
     12
    1113    public CliInstall() {
    12         _out = System.out;
    13         _in = new BufferedReader(new InputStreamReader(System.in));
     14        _out = System.out;
     15        _in = new BufferedReader(new InputStreamReader(System.in));
    1416    }
    1517
    1618    public void showStatus(String s) {
    17         _out.println(s);
     19        _out.println(s);
    1820    }
    19    
     21
    2022    public void showOptError(String s) {
    21         _out.println(s);
     23        _out.println(s);
    2224    }
    2325
    2426    public void handleOptInfo(String s) {
    25         _out.println(s);
     27        _out.println(s);
    2628    }
    2729
    2830    public void startOptCategory(String s) {
    29         _out.println("* "+s+"\n");
     31        _out.println("* " + s + "\n");
    3032    }
    3133
    32     public void finishOptions() {}
     34    public void finishOptions() {
     35    }
    3336
    34     public void handleOption(int number, String question,
    35                              String def, String type) {
    36         Object value;
    37         while(true) {
    38             String answer;
    39             _out.print(question+(def == null?"": (" ["+def+"]"))+": ");
    40             answer = readLine();
    41             if ("".equals(answer) && def != null) {
    42                 answer = def;
    43             }
    44             if (setOption(number,answer)) break;
    45         }
     37    public void handleOption(int number, String question, String def, String type) {
     38        Object value;
     39        while (true) {
     40            String answer;
     41            _out.print(question + (def == null ? "" : (" [" + def + "]")) + ": ");
     42            answer = readLine();
     43            if ("".equals(answer) && def != null) {
     44                answer = def;
     45            }
     46            if (setOption(number, answer)) break;
     47        }
    4648    }
    4749
    4850    public boolean confirmOption(String question, boolean defaultYes) {
    49         _out.print(question);
    50         return readBool(defaultYes);
     51        _out.print(question);
     52        return readBool(defaultYes);
    5153    }
    5254
    5355    private String readLine() {
    54         try {
    55             return _in.readLine().trim();
    56         } catch (IOException ex) {
    57             ex.printStackTrace();
    58             System.exit(1);
    59             return null;
    60         }
     56        try {
     57            return _in.readLine().trim();
     58        } catch (IOException ex) {
     59            ex.printStackTrace();
     60            System.exit(1);
     61            return null;
     62        }
    6163    }
    62    
     64
    6365    private boolean readBool(boolean defaultYes) {
    64         String str = readLine().toLowerCase();
    65         if ("".equals(str)) return defaultYes;
    66         return "yes".equals(str) || "y".equals(str) || "true".equals(str)
    67             || "ok".equals(str) || "sure".equals(str)
    68             || "whatever".equals(str);
     66        String str = readLine().toLowerCase();
     67        if ("".equals(str)) return defaultYes;
     68        return "yes".equals(str) || "y".equals(str) || "true".equals(str) || "ok".equals(str) || "sure".equals(str)
     69               || "whatever".equals(str);
    6970    }
    7071}
  • installer/java/src/FetchSeeds.java

    r51c49d7c re716f9e  
    2929     */
    3030    public static boolean fetchSeeds(File destination, String sourceURL) {
    31         InputStream in = null;
    32         try {
    33             URL source = new URL(sourceURL);
    34             URLConnection con = source.openConnection();
    35             in = con.getInputStream();
    36             BufferedReader br = new BufferedReader
    37                 (new InputStreamReader(in));
    38             String line;
    39             while ((line = br.readLine())!= null) {
    40                 int pos = line.indexOf(" <a href=\"routerInfo-");
    41                 if (pos == -1) continue;
    42                 line=line.substring(pos+10);
    43                 pos=line.indexOf("\"");
    44                 if (pos == -1) continue;
    45                 line=line.substring(0,pos);
    46                 fetchFile(new File(destination, line), sourceURL+line);
    47                 System.out.println(line);       
    48             }
    49             br.close();
    50             return true;
    51         } catch (IOException ex) {
    52             System.err.println("Unable to fetch seeds from " + sourceURL + ": " + ex.getMessage());
    53             //ex.printStackTrace();
    54             return false;
    55         } finally {
    56             if (in != null) try { in.close(); } catch (IOException ioe) {}
    57         }
     31        InputStream in = null;
     32        try {
     33            URL source = new URL(sourceURL);
     34            URLConnection con = source.openConnection();
     35            in = con.getInputStream();
     36            BufferedReader br = new BufferedReader(new InputStreamReader(in));
     37            String line;
     38            while ((line = br.readLine()) != null) {
     39                int pos = line.indexOf(" <a href=\"routerInfo-");
     40                if (pos == -1) continue;
     41                line = line.substring(pos + 10);
     42                pos = line.indexOf("\"");
     43                if (pos == -1) continue;
     44                line = line.substring(0, pos);
     45                fetchFile(new File(destination, line), sourceURL + line);
     46                System.out.println(line);
     47            }
     48            br.close();
     49            return true;
     50        } catch (IOException ex) {
     51            System.err.println("Unable to fetch seeds from " + sourceURL + ": " + ex.getMessage());
     52            //ex.printStackTrace();
     53            return false;
     54        } finally {
     55            if (in != null) try {
     56                in.close();
     57            } catch (IOException ioe) {
     58            }
     59        }
    5860    }
    5961
    60     public static void fetchFile(File destFile, String fileURL)
    61         throws IOException {
    62         URL url = new URL(fileURL);
    63         InputStream in = url.openStream();
    64         OutputStream out = new FileOutputStream(destFile);
    65         byte[] buf = new byte[1024];
    66         int len;
    67         while ((len=in.read(buf)) != -1) {
    68             out.write(buf,0,len);
    69         }
    70         in.close();
    71         out.flush();
    72         out.close();
     62    public static void fetchFile(File destFile, String fileURL) throws IOException {
     63        URL url = new URL(fileURL);
     64        InputStream in = url.openStream();
     65        OutputStream out = new FileOutputStream(destFile);
     66        byte[] buf = new byte[1024];
     67        int len;
     68        while ((len = in.read(buf)) != -1) {
     69            out.write(buf, 0, len);
     70        }
     71        in.close();
     72        out.flush();
     73        out.close();
    7374    }
    7475
     
    7677     * test main method.
    7778     */
    78     public static void  main(String[] args) {
    79         switch (args.length) {
    80             case 1:
    81                 fetchSeeds(new File(args[0]), "http://i2p.dnsalias.net/i2pdb/");
    82                 return;
    83             case 2:
    84                 fetchSeeds(new File(args[0]), args[1]);
    85                 return;
    86             default:
    87                 System.out.println("Usage: FetchSeeds <outDir>");
    88                 System.out.println("    or FetchSeeds <outDir> <seedURL>");
    89                 System.out.println("The default seedURL is http://i2p.dnsalias.net/i2pdb/");
    90                 return;
    91         }
     79    public static void main(String[] args) {
     80        switch (args.length) {
     81        case 1:
     82            fetchSeeds(new File(args[0]), "http://i2p.dnsalias.net/i2pdb/");
     83            return;
     84        case 2:
     85            fetchSeeds(new File(args[0]), args[1]);
     86            return;
     87        default:
     88            System.out.println("Usage: FetchSeeds <outDir>");
     89            System.out.println("    or FetchSeeds <outDir> <seedURL>");
     90            System.out.println("The default seedURL is http://i2p.dnsalias.net/i2pdb/");
     91            return;
     92        }
    9293    }
    9394}
  • installer/java/src/GUIInstall.java

    r51c49d7c re716f9e  
     1
     2
    13import java.awt.BorderLayout;
    24import java.awt.Button;
     
    2527public class GUIInstall extends Install {
    2628
    27     static final GridBagConstraints gbcLeft=new GridBagConstraints();
    28     static final GridBagConstraints gbcRight=new GridBagConstraints();
    29     static final GridBagConstraints gbcBottom=new GridBagConstraints();
     29    static final GridBagConstraints gbcLeft = new GridBagConstraints();
     30    static final GridBagConstraints gbcRight = new GridBagConstraints();
     31    static final GridBagConstraints gbcBottom = new GridBagConstraints();
    3032    static {
    31         gbcLeft.anchor=GridBagConstraints.EAST;
    32         gbcRight.fill=GridBagConstraints.HORIZONTAL;
    33         gbcRight.gridwidth=GridBagConstraints.REMAINDER;
    34         gbcRight.weightx=1.0;
    35         gbcBottom.weighty=1.0;
    36         gbcBottom.gridwidth=GridBagConstraints.REMAINDER;
    37         gbcBottom.fill=GridBagConstraints.BOTH;
    38         gbcBottom.insets=new Insets(4,4,4,4);
     33        gbcLeft.anchor = GridBagConstraints.EAST;
     34        gbcRight.fill = GridBagConstraints.HORIZONTAL;
     35        gbcRight.gridwidth = GridBagConstraints.REMAINDER;
     36        gbcRight.weightx = 1.0;
     37        gbcBottom.weighty = 1.0;
     38        gbcBottom.gridwidth = GridBagConstraints.REMAINDER;
     39        gbcBottom.fill = GridBagConstraints.BOTH;
     40        gbcBottom.insets = new Insets(4, 4, 4, 4);
    3941    }
    4042
    4143    public static void main(String[] args) {
    42         new GUIInstall().runInstall();
    43     }
    44    
     44        new GUIInstall().runInstall();
     45    }
     46
    4547    private InstallFrame frame;
    46     boolean installing=false;
     48    boolean installing = false;
    4749    ArrayList categories = new ArrayList();
    4850    InstallCategory currentCategory = null;
    4951
    5052    public String handleSpliceParams(String s) {
    51         // any better ideas?
    52         return s;
    53     }
    54 
     53        // any better ideas?
     54        return s;
     55    }
    5556
    5657    public GUIInstall() {
    57         frame = new InstallFrame();
     58        frame = new InstallFrame();
    5859    }
    5960
    6061    public void showStatus(String s) {
    61         if (!installing)
    62             throw new RuntimeException("Not installing yet!");
    63         frame.showStatus(s);
    64     }
    65    
     62        if (!installing) throw new RuntimeException("Not installing yet!");
     63        frame.showStatus(s);
     64    }
     65
    6666    public void showOptError(String s) {
    67         frame.showOptError(s);
     67        frame.showOptError(s);
    6868    }
    6969
    7070    public void handleOptInfo(String s) {
    71         currentCategory.addInfo(s);
     71        currentCategory.addInfo(s);
    7272    }
    7373
    7474    public void startOptCategory(String s) {
    75         currentCategory = new InstallCategory();
    76         categories.add(currentCategory);
     75        currentCategory = new InstallCategory();
     76        categories.add(currentCategory);
    7777    }
    7878
    7979    public void finishOptions() {
    80         frame.startInstall(categories);
    81         System.out.println("Starting install...");
    82     }
    83 
    84     public void handleOption(int number, String question,
    85                              String def, String type) {
    86         currentCategory.addOption(number, question, def, type);
     80        frame.startInstall(categories);
     81        System.out.println("Starting install...");
     82    }
     83
     84    public void handleOption(int number, String question, String def, String type) {
     85        currentCategory.addOption(number, question, def, type);
    8786    }
    8887
    8988    public boolean confirmOption(String question, boolean defaultYes) {
    90         ConfirmFrame cf = new ConfirmFrame(frame, question, defaultYes);
    91         return cf.getResult();
     89        ConfirmFrame cf = new ConfirmFrame(frame, question, defaultYes);
     90        return cf.getResult();
    9291    }
    9392
    9493    private class ConfirmFrame extends Dialog {
    95         private boolean result;
    96         private ConfirmFrame(Frame parent, String msg,
    97                             boolean defaultYes) {
    98             super(parent,"Installer question",true);
    99             setBackground(Color.lightGray);
    100             setLayout(new BorderLayout());
    101             TextArea ta;
    102             Panel p;
    103             Button b1, b2;
    104             add("Center", ta = new TextArea(msg, 3, 80));
    105             ta.setEditable(false);
    106             add("South", p = new Panel(new FlowLayout()));
    107             p.add(b1 = new Button("Yes"));
    108             p.add(b2 = new Button("No"));
    109             ActionListener al = new ActionListener() {
    110                     public void actionPerformed(ActionEvent evt) {
    111                         result = evt.getActionCommand().equals("Yes");
    112                         ConfirmFrame.this.dispose();
    113                     }
    114                 };
    115             b1.addActionListener(al);
    116             b2.addActionListener(al);
    117             pack();
     94        private boolean result;
     95
     96        private ConfirmFrame(Frame parent, String msg, boolean defaultYes) {
     97            super(parent, "Installer question", true);
     98            setBackground(Color.lightGray);
     99            setLayout(new BorderLayout());
     100            TextArea ta;
     101            Panel p;
     102            Button b1, b2;
     103            add("Center", ta = new TextArea(msg, 3, 80));
     104            ta.setEditable(false);
     105            add("South", p = new Panel(new FlowLayout()));
     106            p.add(b1 = new Button("Yes"));
     107            p.add(b2 = new Button("No"));
     108            ActionListener al = new ActionListener() {
     109                public void actionPerformed(ActionEvent evt) {
     110                    result = evt.getActionCommand().equals("Yes");
     111                    ConfirmFrame.this.dispose();
     112                }
     113            };
     114            b1.addActionListener(al);
     115            b2.addActionListener(al);
     116            pack();
    118117
    119118            // java 1.4
    120             //setLocationRelativeTo(parent);
    121             show();
    122             (defaultYes?b1:b2).requestFocus();
    123         }
    124 
    125         private boolean getResult() {
    126             return result;
    127         }
     119            //setLocationRelativeTo(parent);
     120            show();
     121            (defaultYes ? b1 : b2).requestFocus();
     122        }
     123
     124        private boolean getResult() {
     125            return result;
     126        }
    128127    }
    129128
    130129    private class InstallCategory extends ArrayList {
    131         public void addInfo(String s) {
    132             add(new InfoOption(s));
    133         }
    134 
    135         public void addOption(int number, String question,
    136                               String def, String type) {
    137             add(new RealOption(number, question, def, type));
    138         }
     130        public void addInfo(String s) {
     131            add(new InfoOption(s));
     132        }
     133
     134        public void addOption(int number, String question, String def, String type) {
     135            add(new RealOption(number, question, def, type));
     136        }
    139137    }
    140138
    141139    private interface InstallOption {
    142         public Component getComponent1();
    143         public Component getComponent2();
    144         public boolean setValue();
    145         public String getQuestion();
    146     }
    147    
     140        public Component getComponent1();
     141
     142        public Component getComponent2();
     143
     144        public boolean setValue();
     145
     146        public String getQuestion();
     147    }
     148
    148149    private class InfoOption extends Panel implements InstallOption {
    149150
    150         public InfoOption(String s) {
    151             super(new GridLayout(0,1,0,0));
    152             for(StringTokenizer st = new StringTokenizer(s,"\n");
    153                 st.hasMoreTokens();) {
    154                 add(new Label(st.nextToken()));
    155             }
    156         }
    157         public Component getComponent1() { return null;}
    158         public Component getComponent2() { return this;}
    159         public boolean setValue() {return true;}
    160         public String getQuestion() { return "<no question>";}
     151        public InfoOption(String s) {
     152            super(new GridLayout(0, 1, 0, 0));
     153            for (StringTokenizer st = new StringTokenizer(s, "\n"); st.hasMoreTokens();) {
     154                add(new Label(st.nextToken()));
     155            }
     156        }
     157
     158        public Component getComponent1() {
     159            return null;
     160        }
     161
     162        public Component getComponent2() {
     163            return this;
     164        }
     165
     166        public boolean setValue() {
     167            return true;
     168        }
     169
     170        public String getQuestion() {
     171            return "<no question>";
     172        }
    161173    }
    162174
    163175    private class RealOption implements InstallOption {
    164176
    165         private int number;
    166         private String def, question;
    167         private Label l;
    168         private TextField t;
    169        
    170         public RealOption(int number, String question,
    171                           String def, String type) {
    172             this.number = number;
    173             l = new Label(question);
    174             t = new TextField(def);
    175             this.def=def;
    176             this.question=question;
    177             // type is not needed yet
    178         }
    179 
    180         public void reset() {t.setText(def);}
    181 
    182         public String getQuestion() { return question; }
    183 
    184         public boolean setValue() {
    185             return GUIInstall.this.setOption(number, t.getText());
    186         }
    187        
    188         public Component getComponent1() { return l;}
    189         public Component getComponent2() { return t;}
    190        
     177        private int number;
     178        private String def, question;
     179        private Label l;
     180        private TextField t;
     181
     182        public RealOption(int number, String question, String def, String type) {
     183            this.number = number;
     184            l = new Label(question);
     185            t = new TextField(def);
     186            this.def = def;
     187            this.question = question;
     188            // type is not needed yet
     189        }
     190
     191        public void reset() {
     192            t.setText(def);
     193        }
     194
     195        public String getQuestion() {
     196            return question;
     197        }
     198
     199        public boolean setValue() {
     200            return GUIInstall.this.setOption(number, t.getText());
     201        }
     202
     203        public Component getComponent1() {
     204            return l;
     205        }
     206
     207        public Component getComponent2() {
     208            return t;
     209        }
     210
    191211    }
    192212
    193213    private class InstallFrame extends Frame {
    194214
    195         private int current = -1;
    196         private Panel cats;
    197         private CardLayout cl;
    198         private boolean windowOpen = true;
    199         private TextArea log;
    200                
    201         public InstallFrame() {
    202             super("I2P Installer");
    203             setBackground(Color.lightGray);
    204             Panel p;
    205             Button b;
    206             setLayout(new BorderLayout());
    207             add("Center", cats = new Panel(cl = new CardLayout()));
    208             cats.add("Start", p= new Panel(new BorderLayout()));
    209             p.add("Center", new Label("Loading installer..."));
    210             cats.add("Install", p= new Panel(new BorderLayout()));
    211             p.add("Center", log=new TextArea("Installing...\n\n"));
    212             log.setEditable(false);
    213             add("South", p = new Panel(new FlowLayout()));
    214             p.add(b = new Button("<< Back"));
    215             b.addActionListener(new ActionListener() {
    216                     public void actionPerformed(ActionEvent evt) {
    217                         if (current > 0) {
    218                             current --;
    219                             cl.show(cats,""+current);
    220                         }
    221                     }
    222                 });
    223             p.add(b = new Button("Next >>"));
    224             b.addActionListener(new ActionListener() {
    225                     public void actionPerformed(ActionEvent evt) {
    226                         if (current != -1) {
    227                             if (!saveCurrent()) return;
    228                             current ++;
    229                             if (current == categoryPanels.length) {
    230                                 cl.show(cats,"Install");
    231                                 current = -1;
    232                                 synchronized(InstallFrame.this) {
    233                                     installing=true;
    234                                     windowOpen=false;
    235                                     InstallFrame.this.notify();
    236                                 }
    237                             } else {
    238                                 cl.show(cats,""+current);
    239                             }
    240                         }
    241                     }
    242                 });
    243             p.add(b = new Button("Quit"));
    244             b.addActionListener(new ActionListener() {
    245                     public void actionPerformed(ActionEvent evt) {
    246                         System.exit(0);
    247                     }
    248                 });
    249             addWindowListener(new WindowAdapter() {
    250                     public void windowClosing(WindowEvent evt) {
    251                         System.exit(0);
    252                     }
    253                 });
    254             setSize(600,450);
     215        private int current = -1;
     216        private Panel cats;
     217        private CardLayout cl;
     218        private boolean windowOpen = true;
     219        private TextArea log;
     220
     221        public InstallFrame() {
     222            super("I2P Installer");
     223            setBackground(Color.lightGray);
     224            Panel p;
     225            Button b;
     226            setLayout(new BorderLayout());
     227            add("Center", cats = new Panel(cl = new CardLayout()));
     228            cats.add("Start", p = new Panel(new BorderLayout()));
     229            p.add("Center", new Label("Loading installer..."));
     230            cats.add("Install", p = new Panel(new BorderLayout()));
     231            p.add("Center", log = new TextArea("Installing...\n\n"));
     232            log.setEditable(false);
     233            add("South", p = new Panel(new FlowLayout()));
     234            p.add(b = new Button("<< Back"));
     235            b.addActionListener(new ActionListener() {
     236                public void actionPerformed(ActionEvent evt) {
     237                    if (current > 0) {
     238                        current--;
     239                        cl.show(cats, "" + current);
     240                    }
     241                }
     242            });
     243            p.add(b = new Button("Next >>"));
     244            b.addActionListener(new ActionListener() {
     245                public void actionPerformed(ActionEvent evt) {
     246                    if (current != -1) {
     247                        if (!saveCurrent()) return;
     248                        current++;
     249                        if (current == categoryPanels.length) {
     250                            cl.show(cats, "Install");
     251                            current = -1;
     252                            synchronized (InstallFrame.this) {
     253                                installing = true;
     254                                windowOpen = false;
     255                                InstallFrame.this.notify();
     256                            }
     257                        } else {
     258                            cl.show(cats, "" + current);
     259                        }
     260                    }
     261                }
     262            });
     263            p.add(b = new Button("Quit"));
     264            b.addActionListener(new ActionListener() {
     265                public void actionPerformed(ActionEvent evt) {
     266                    System.exit(0);
     267                }
     268            });
     269            addWindowListener(new WindowAdapter() {
     270                public void windowClosing(WindowEvent evt) {
     271                    System.exit(0);
     272                }
     273            });
     274            setSize(600, 450);
    255275
    256276            // java 1.4
    257             //setLocationRelativeTo(null);
    258             show();
    259         }
    260 
    261         public void showStatus(String s) {
    262             log.append(s+"\n");
    263         }
    264         public void showOptError(String s) {
    265             if (current == -1) throw new RuntimeException("No options here!");
    266             categoryPanels[current].showError(s);
    267         }
    268 
    269         private CategoryPanel[] categoryPanels;
    270        
    271         public void startInstall(ArrayList categories) {
    272             Panel p;
    273             categoryPanels = new CategoryPanel[categories.size()];
    274             //build a panel for each category
    275             Iterator it = categories.iterator();
    276             for (int i=0; it.hasNext(); i++) {
    277                 cats.add(""+i, categoryPanels[i] =
    278                          new CategoryPanel((InstallCategory)it.next()));
    279             }
    280             current = 0;
    281             cl.show(cats,"0");
    282             // wait till config is complete
    283             synchronized(this) {
    284                 while(windowOpen) {
    285                     try {
    286                         wait();
    287                     } catch (InterruptedException ex) {
    288                         ex.printStackTrace();
    289                     }
    290                 }
    291             }
    292         }
    293 
    294         private boolean saveCurrent() {
    295             return categoryPanels[current].saveOptions();
    296         }
    297     }
    298            
     277            //setLocationRelativeTo(null);
     278            show();
     279        }
     280
     281        public void showStatus(String s) {
     282            log.append(s + "\n");
     283        }
     284
     285        public void showOptError(String s) {
     286            if (current == -1) throw new RuntimeException("No options here!");
     287            categoryPanels[current].showError(s);
     288        }
     289
     290        private CategoryPanel[] categoryPanels;
     291
     292        public void startInstall(ArrayList categories) {
     293            Panel p;
     294            categoryPanels = new CategoryPanel[categories.size()];
     295            //build a panel for each category
     296            Iterator it = categories.iterator();
     297            for (int i = 0; it.hasNext(); i++) {
     298                cats.add("" + i, categoryPanels[i] = new CategoryPanel((InstallCategory) it.next()));
     299            }
     300            current = 0;
     301            cl.show(cats, "0");
     302            // wait till config is complete
     303            synchronized (this) {
     304                while (windowOpen) {
     305                    try {
     306                        wait();
     307                    } catch (InterruptedException ex) {
     308                        ex.printStackTrace();
     309                    }
     310                }
     311            }
     312        }
     313
     314        private boolean saveCurrent() {
     315            return categoryPanels[current].saveOptions();
     316        }
     317    }
     318
    299319    private class CategoryPanel extends Panel {
    300320
    301         private TextArea errorBox;
    302         private InstallCategory ic;
    303        
    304         public CategoryPanel(InstallCategory ic) {
    305             super(new GridBagLayout());
    306             this.ic=ic;
    307             for (Iterator it = ic.iterator(); it.hasNext();) {
    308                 InstallOption io = (InstallOption) it.next();
    309                 Component c1 = io.getComponent1(),
    310                     c2 = io.getComponent2();
    311                 if (c1 != null) add(c1, gbcLeft);
    312                 add(c2, gbcRight);
    313             }
    314             add (errorBox = new TextArea(), gbcBottom);
    315             errorBox.setEditable(false);
    316         }
    317 
    318         private InstallOption currentOption;
    319         public boolean saveOptions() {
    320             errorBox.setText("Saving options...\n\n");
    321             for (Iterator it = ic.iterator(); it.hasNext();) {
    322                 InstallOption io = (InstallOption) it.next();
    323                 currentOption=io;
    324                 if (!io.setValue()) return false;
    325                 currentOption= null;
    326             }
    327             return true;
    328         }
    329 
    330         public void showError(String s) {
    331             if (currentOption==null) {
    332                 throw new RuntimeException("No option to test");
    333             }
    334             errorBox.append("While setting \""+currentOption.getQuestion()+
    335                             "\":\n"+s+"\n\n");
    336         }
     321        private TextArea errorBox;
     322        private InstallCategory ic;
     323
     324        public CategoryPanel(InstallCategory ic) {
     325            super(new GridBagLayout());
     326            this.ic = ic;
     327            for (Iterator it = ic.iterator(); it.hasNext();) {
     328                InstallOption io = (InstallOption) it.next();
     329                Component c1 = io.getComponent1(), c2 = io.getComponent2();
     330                if (c1 != null) add(c1, gbcLeft);
     331                add(c2, gbcRight);
     332            }
     333            add(errorBox = new TextArea(), gbcBottom);
     334            errorBox.setEditable(false);
     335        }
     336
     337        private InstallOption currentOption;
     338
     339        public boolean saveOptions() {
     340            errorBox.setText("Saving options...\n\n");
     341            for (Iterator it = ic.iterator(); it.hasNext();) {
     342                InstallOption io = (InstallOption) it.next();
     343                currentOption = io;
     344                if (!io.setValue()) return false;
     345                currentOption = null;
     346            }
     347            return true;
     348        }
     349
     350        public void showError(String s) {
     351            if (currentOption == null) { throw new RuntimeException("No option to test"); }
     352            errorBox.append("While setting \"" + currentOption.getQuestion() + "\":\n" + s + "\n\n");
     353        }
    337354    }
    338355}
Note: See TracChangeset for help on using the changeset viewer.