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  * ident        "%Z%%M% %I%     %E% SMI"
  24  *
  25  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  26  * Use is subject to license terms.
  27  */
  28 package com.sun.dhcpmgr.client;
  29 
  30 import java.awt.*;
  31 import java.awt.event.*;
  32 import java.text.MessageFormat;
  33 import java.util.*;
  34 import javax.swing.*;
  35 
  36 import com.sun.dhcpmgr.server.*;
  37 import com.sun.dhcpmgr.data.*;
  38 import com.sun.dhcpmgr.ui.*;
  39 
  40 /**
  41  *  This dialog handles enabling and disabling the service, with user
  42  * confirmation
  43  */
  44 public class DisableServiceDialog extends DhcpmgrDialog {
  45     private boolean disable;
  46     private JLabel message;
  47     
  48     public DisableServiceDialog(Frame f, boolean disable) {
  49         super(f, false);
  50         
  51         this.disable = disable;
  52         
  53         String name = DataManager.get().getShortServerName();
  54         if (disable) {
  55             setTitle(ResourceStrings.getString("disable_service_title"));
  56             if (DhcpmgrApplet.modeIsRelay) {
  57                 message.setText(MessageFormat.format(
  58                     ResourceStrings.getString("disable_relay_confirm"), name));
  59                 message.setToolTipText(MessageFormat.format(
  60                     ResourceStrings.getString("disable_relay_confirm"), name));
  61             } else {
  62                 message.setText(MessageFormat.format(
  63                     ResourceStrings.getString("disable_service_confirm"),
  64                     name));
  65                 message.setToolTipText(MessageFormat.format(
  66                     ResourceStrings.getString("disable_service_confirm"),
  67                     name));
  68             }
  69         } else {
  70             setTitle(ResourceStrings.getString("enable_service_title"));
  71             if (DhcpmgrApplet.modeIsRelay) {
  72                 message.setText(MessageFormat.format(
  73                     ResourceStrings.getString("enable_relay_confirm"), name));
  74                 message.setToolTipText(MessageFormat.format(
  75                     ResourceStrings.getString("enable_relay_confirm"), name));
  76             } else {
  77                 message.setText(MessageFormat.format(
  78                     ResourceStrings.getString("enable_service_confirm"), name));
  79                 message.setToolTipText(MessageFormat.format(
  80                     ResourceStrings.getString("enable_service_confirm"), name));
  81             }
  82         }
  83     }
  84 
  85     protected JPanel getMainPanel() {
  86         JPanel panel = new JPanel();
  87         panel.setBorder(BorderFactory.createEmptyBorder(20, 10, 20, 10));
  88         message = new JLabel();
  89         panel.add(message);
  90 
  91         buttonPanel.setOkEnabled(true);
  92         return panel;
  93     }
  94 
  95     protected void doOk() {
  96         try {
  97             DhcpServiceMgr server = DataManager.get().getDhcpServiceMgr();
  98             DhcpdOptions opts =
  99                 DataManager.get().getDhcpServiceMgr().readDefaults();
 100             if (disable) {
 101                 // Shutdown the server and disable the daemon.
 102                 server.shutdown();
 103                 opts.setDaemonEnabled(false);
 104                 DataManager.get().getDhcpServiceMgr().writeDefaults(opts);
 105             } else {
 106                 // Enable = reverse the process
 107                 opts.setDaemonEnabled(true);
 108                 DataManager.get().getDhcpServiceMgr().writeDefaults(opts);
 109                 server.startup();
 110             }
 111             fireActionPerformed();
 112             setVisible(false);
 113             dispose();
 114         } catch (Exception e) {
 115             e.printStackTrace();
 116             MessageFormat form = null;
 117             Object [] args = new Object[1];
 118             if (disable) {
 119                 form = new MessageFormat(
 120                     ResourceStrings.getString("disable_service_error"));
 121             } else {
 122                 form = new MessageFormat(
 123                     ResourceStrings.getString("enable_service_error"));
 124             }
 125             args[0] = e.getMessage();
 126             JOptionPane.showMessageDialog(this, form.format(args),
 127                 ResourceStrings.getString("server_error_title"),
 128                 JOptionPane.ERROR_MESSAGE);
 129         }
 130     }
 131 
 132     protected String getHelpKey() {
 133         if (disable) {
 134             return "disable_service";
 135         } else {
 136             return "enable_service";
 137         }
 138     }
 139     
 140     /**
 141      * Notify listeners that enable or disable has been done.
 142      */
 143     protected void fireActionPerformed() {
 144         String cmd;
 145         if (disable) {
 146             cmd = DialogActions.DISABLE;
 147         } else {
 148             cmd = DialogActions.ENABLE;
 149         }
 150         fireActionPerformed(this, cmd);
 151     }
 152 }