001 /* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020 package org.apache.directory.server.ldap.gui; 021 022 023 import java.awt.BorderLayout; 024 import java.awt.Cursor; 025 026 import javax.swing.JPanel; 027 import javax.swing.JDialog; 028 import javax.swing.JButton; 029 import javax.swing.JProgressBar; 030 031 032 public class ShutdownProgress extends JDialog implements Runnable 033 { 034 private static final long serialVersionUID = 1L; 035 private JPanel jContentPane = null; 036 private JPanel jPanel = null; 037 private JButton jButton = null; 038 private JProgressBar jProgressBar = null; 039 private long timeMillis = 0; 040 private boolean bypass = false; 041 042 043 public void setTime( long millis ) 044 { 045 this.timeMillis = millis; 046 } 047 048 049 public void run() 050 { 051 setCursor( Cursor.getPredefinedCursor( Cursor.WAIT_CURSOR ) ); 052 jProgressBar.setEnabled( true ); 053 jProgressBar.setMinimum( 0 ); 054 jProgressBar.setMaximum( ( int ) timeMillis ); 055 jProgressBar.setValue( 0 ); 056 jProgressBar.setStringPainted( true ); 057 final long startTime = System.currentTimeMillis(); 058 while ( System.currentTimeMillis() - startTime < timeMillis && !bypass ) 059 { 060 try 061 { 062 Thread.sleep( 100 ); 063 } 064 catch ( InterruptedException e ) 065 { 066 // TODO Auto-generated catch block 067 e.printStackTrace(); 068 } 069 jProgressBar.setString( ( timeMillis - ( System.currentTimeMillis() - startTime ) ) / 1000 070 + " seconds remaining ..." ); 071 jProgressBar.setValue( jProgressBar.getValue() + 100 ); 072 this.repaint(); 073 } 074 075 setCursor( null ); 076 setVisible( false ); 077 dispose(); 078 } 079 080 081 /** 082 * This is the default constructor 083 */ 084 public ShutdownProgress() 085 { 086 super(); 087 initialize(); 088 } 089 090 091 /** 092 * This method initializes this 093 * 094 * @return void 095 */ 096 private void initialize() 097 { 098 this.setSize( 300, 104 ); 099 this.setContentPane( getJContentPane() ); 100 } 101 102 103 /** 104 * This method initializes jContentPane 105 * 106 * @return javax.swing.JPanel 107 */ 108 private JPanel getJContentPane() 109 { 110 if ( jContentPane == null ) 111 { 112 jContentPane = new JPanel(); 113 jContentPane.setLayout( new BorderLayout() ); 114 jContentPane.add( getJPanel(), java.awt.BorderLayout.SOUTH ); 115 jContentPane.add( getJProgressBar(), java.awt.BorderLayout.CENTER ); 116 } 117 return jContentPane; 118 } 119 120 121 /** 122 * This method initializes jPanel 123 * 124 * @return javax.swing.JPanel 125 */ 126 private JPanel getJPanel() 127 { 128 if ( jPanel == null ) 129 { 130 jPanel = new JPanel(); 131 jPanel.add( getJButton(), null ); 132 } 133 return jPanel; 134 } 135 136 137 /** 138 * This method initializes jButton 139 * 140 * @return javax.swing.JButton 141 */ 142 private JButton getJButton() 143 { 144 if ( jButton == null ) 145 { 146 jButton = new JButton(); 147 jButton.setText( "Bypass Delay" ); 148 jButton.setText( "Bypass Delay" ); 149 jButton.addActionListener( new java.awt.event.ActionListener() 150 { 151 public void actionPerformed( java.awt.event.ActionEvent e ) 152 { 153 bypass = true; 154 } 155 } ); 156 } 157 return jButton; 158 } 159 160 161 /** 162 * This method initializes jProgressBar 163 * 164 * @return javax.swing.JProgressBar 165 */ 166 private JProgressBar getJProgressBar() 167 { 168 if ( jProgressBar == null ) 169 { 170 jProgressBar = new JProgressBar(); 171 } 172 return jProgressBar; 173 } 174 175 } // @jve:decl-index=0:visual-constraint="10,10"