All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.schlichtherle.key.passwd.swing.PromptingKeyManager Maven / Gradle / Ivy

Go to download

TrueZIP is a Java based Virtual File System (VFS) to enable transparent, multi-threaded read/write access to archive files (ZIP, TAR etc.) as if they were directories. Archive files may be arbitrarily nested and the nesting level is only limited by heap and file system size.

The newest version!
/*
 * Copyright (C) 2006-2010 Schlichtherle IT Services
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package de.schlichtherle.key.passwd.swing;

import de.schlichtherle.awt.Windows;
import de.schlichtherle.key.KeyPromptingDisabledException;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Window;
import javax.swing.JOptionPane;

/**
 * A key manager which enables users to enter passwords or select key files
 * as keys using a Swing GUI.
 * This key manager is used by default unless the JVM is running in headless
 * mode!
 * 

* If a password is entered, then the run time type of the key is a char array, * holding each password character. * If a key file is selected, the file size must be 512 bytes or more, of * which only the first 512 bytes are used as a byte array. *

* If this JVM is run in headless mode, all prompting is disabled. *

* Note that class loading and instantiation may happen in a JVM shutdown hook, * so class initializers and constructors must behave accordingly. * In particular, it's not permitted to construct or use a Swing GUI there. *

* This class is thread safe. * * @author Christian Schlichtherle * @version $Id$ * @since TrueZIP 6.0 */ public class PromptingKeyManager extends de.schlichtherle.key.PromptingKeyManager { /** * Constructs a new {@code PromptingKeyManager}. * This instance maps the following key provider UI types using * {@link de.schlichtherle.key.PromptingKeyManager#mapPromptingKeyProviderUIType}: *

* * * * * * * * * * * * *
uiClassIDuiClass
"PromptingKeyProvider"PromptingKeyProviderUI.class
"PromptingAesKeyProvider"PromptingAesKeyProviderUI.class
*/ public PromptingKeyManager() { mapPromptingKeyProviderUIType( "PromptingKeyProvider", PromptingKeyProviderUI.class); mapPromptingKeyProviderUIType( "PromptingAesKeyProvider", PromptingAesKeyProviderUI.class); } /** * Returns the parent window of the * {@link Windows#getLastFocusedWindow() last focused window}. * If no window received the focus yet or is already made eligible for * finalization, then any showing window is used. *

* In all cases, the first showing parent window which is found by * searching the containment hierarchy upwards is preferrably returned. *

* As a last resort, if no window is showing, then {@link JOptionPane}'s * root frame is used. */ public static Window getParentWindow() { return Windows.getParentWindow(); } /** * Sets the parent window of the dialog used for prompting the user for * a key. * The window is stored in a weak reference in order to allow it to get * garbage collected if no thread is holding a strong reference to it * from a root object. * * @param w The parent window to use for key prompting or * {@code null} if a default window shall be used. * @see #getParentWindow() * @deprecated You shouldn't use this method any more, but rely on the * implementation in {@link #getParentWindow()}. */ public static void setParentWindow(final Window w) { Windows.setParentWindow(w); } // // Instance stuff: // protected boolean isPromptingImpl() { return super.isPromptingImpl() && !GraphicsEnvironment.isHeadless(); } /** * If this JVM is running in headless mode, then this method throws * a {@link KeyPromptingDisabledException} with a {@link HeadlessException} * as its cause. */ protected void ensurePromptingImpl() throws KeyPromptingDisabledException { if (GraphicsEnvironment.isHeadless()) throw new KeyPromptingDisabledException(new HeadlessException()); super.ensurePromptingImpl(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy