1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 1998-2002 by Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 package com.sun.dhcpmgr.client; 27 28 import javax.swing.*; 29 import javax.swing.border.*; 30 import javax.swing.event.*; 31 import javax.swing.table.*; 32 33 import java.awt.*; 34 import java.awt.event.*; 35 import java.text.*; 36 import java.util.*; 37 import java.net.*; 38 39 import com.sun.dhcpmgr.bridge.*; 40 import com.sun.dhcpmgr.server.*; 41 import com.sun.dhcpmgr.data.*; 42 import com.sun.dhcpmgr.ui.*; 43 44 /** 45 * A dialog to confirm the user's request to unconfigure the service. 46 */ 47 public class UnconfigureDialog extends MultipleOperationDialog { 48 private JCheckBox deleteTables; 49 private int networkCount = 0; 50 private Network [] nets = new Network[0]; 51 52 public UnconfigureDialog(Frame f) { 53 // No reset button for us 54 super(f, false); 55 } 56 57 public String getTitle() { 58 return ResourceStrings.getString("unconfigure_title"); 59 } 60 61 protected JPanel getMainPanel() { 62 63 JPanel mainPanel = new JPanel(); 64 mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); 65 66 Box box = Box.createVerticalBox(); 67 68 if (!DhcpmgrApplet.modeIsRelay) { 69 JComponent c = Wizard.createTextArea( 70 ResourceStrings.getString("unconfigure_dhcp"), 4, 30); 71 c.setAlignmentX(Component.LEFT_ALIGNMENT); 72 box.add(c); 73 box.add(Box.createVerticalStrut(10)); 74 deleteTables = new JCheckBox( 75 ResourceStrings.getString("unconfigure_delete_tables"), false); 76 deleteTables.setToolTipText( 77 ResourceStrings.getString("unconfigure_delete_tables")); 78 deleteTables.setAlignmentX(Component.LEFT_ALIGNMENT); 79 box.add(deleteTables); 80 box.add(Box.createVerticalStrut(10)); 81 } else { 82 JComponent c = Wizard.createTextArea( 83 ResourceStrings.getString("unconfigure_bootp"), 4, 30); 84 c.setAlignmentX(Component.LEFT_ALIGNMENT); 85 box.add(c); 86 } 87 box.add(Box.createVerticalStrut(10)); 88 JComponent c = Wizard.createTextArea( 89 ResourceStrings.getString("unconfigure_shutdown"), 2, 30); 90 c.setAlignmentX(Component.LEFT_ALIGNMENT); 91 box.add(c); 92 mainPanel.add(box); 93 buttonPanel.setOkEnabled(true); 94 return mainPanel; 95 } 96 97 protected String getProgressMessage() { 98 return ResourceStrings.getString("unconfigure_progress"); 99 } 100 101 protected int getProgressLength() { 102 // Initialize to number of ops required even if only a relay 103 int length = 2; 104 if (!DhcpmgrApplet.modeIsRelay) { 105 // Add one for deleting defaults file, and one for deleting macro 106 length += 2; 107 if (deleteTables.isSelected()) { 108 try { 109 nets = DataManager.get().getNetworks(false); 110 } catch (Throwable t) { 111 // Ignore 112 } 113 length += nets.length + 1; // Add one for dhcptab 114 } 115 } 116 return length; 117 } 118 119 protected String getErrorHeading() { 120 return ResourceStrings.getString("unconfigure_error_heading"); 121 } 122 123 protected Thread getOperationThread() { 124 return new Thread() { 125 public void run() { 126 int checkpoint = 0; 127 DhcpServiceMgr serviceMgr = 128 DataManager.get().getDhcpServiceMgr(); 129 // Shut down the server 130 try { 131 serviceMgr.shutdown(); 132 } catch (Throwable e) { 133 addError( 134 ResourceStrings.getString("unconfigure_error_shutdown"), 135 e.getMessage()); 136 } 137 try { 138 updateProgress(++checkpoint, ResourceStrings.getString( 139 "unconfigure_server_shutdown")); 140 } catch (InterruptedException e) { 141 closeDialog(); 142 return; 143 } 144 145 // If this was a relay we're done 146 if (!DhcpmgrApplet.modeIsRelay) { 147 // Remove the server macro 148 try { 149 DataManager.get().getDhcptabMgr().deleteRecord( 150 new Macro(DataManager.get().getShortServerName()), 151 false); 152 } catch (Throwable e) { 153 addError(ResourceStrings.getString( 154 "unconfigure_error_macro"), 155 e.getMessage()); 156 } 157 try { 158 updateProgress(++checkpoint, ResourceStrings.getString( 159 "unconfigure_macro_deleted")); 160 } catch (InterruptedException e) { 161 closeDialog(); 162 return; 163 } 164 165 // Delete all the network tables and the dhcptab 166 if (deleteTables.isSelected()) { 167 if (nets != null && nets.length != 0) { 168 MessageFormat errForm = new MessageFormat( 169 ResourceStrings.getString( 170 "unconfigure_error_network")); 171 MessageFormat progForm = new MessageFormat( 172 ResourceStrings.getString( 173 "unconfigure_network_progress")); 174 Object [] args = new Object[1]; 175 for (int i = 0; i < nets.length; ++i) { 176 String netString = nets[i].toString(); 177 args[0] = netString; 178 try { 179 DataManager.get().getDhcpNetMgr(). 180 deleteNetwork(netString, true); 181 } catch (Throwable e) { 182 addError(errForm.format(args), 183 e.getMessage()); 184 } 185 try { 186 updateProgress(++checkpoint, 187 progForm.format(args)); 188 } catch (InterruptedException e) { 189 closeDialog(); 190 return; 191 } 192 } 193 } 194 try { 195 DataManager.get().getDhcptabMgr().deleteDhcptab(); 196 } catch (Throwable e) { 197 addError(ResourceStrings.getString( 198 "unconfigure_error_dhcptab"), 199 e.getMessage()); 200 } 201 try { 202 updateProgress(++checkpoint, 203 ResourceStrings.getString( 204 "unconfigure_dhcptab_deleted")); 205 } catch (InterruptedException e) { 206 closeDialog(); 207 return; 208 } 209 } 210 } 211 212 // Remove the defaults file last, else stuff above may fail. 213 try { 214 serviceMgr.removeDefaults(); 215 } catch (Throwable e) { 216 addError(ResourceStrings.getString( 217 "unconfigure_error_defaults"), e.getMessage()); 218 } 219 try { 220 updateProgress(++checkpoint, ResourceStrings.getString( 221 "unconfigure_defaults_deleted")); 222 } catch (InterruptedException e) { 223 closeDialog(); 224 return; 225 } 226 227 if (errorsOccurred()) { 228 displayErrors(ResourceStrings.getString( 229 "unconfigure_error_messages")); 230 } 231 closeDialog(); 232 } 233 }; 234 } 235 236 protected String getHelpKey() { 237 if (DhcpmgrApplet.modeIsRelay) { 238 return "unconfigure_relay"; 239 } else { 240 return "unconfigure_server"; 241 } 242 } 243 244 protected void fireActionPerformed() { 245 fireActionPerformed(this, DialogActions.OK); 246 } 247 248 }