/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at legal-notices/CDDLv1_0.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information:
* Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*
*
* Copyright 2006-2010 Sun Microsystems, Inc.
* Portions Copyright 2013 ForgeRock AS.
*/
/**
* This is an abstract class that is extended by all the classes that are in
* the CardLayout of CurrentStepPanel. All the panels that appear on the
* top-right side of the dialog extend this class: WelcomePane, ReviewPanel,
* etc.
*
*/
implements HyperlinkListener
{
new HashSet<ButtonActionListener>();
private boolean isCheckingVisible;
/* We can use a HashMap (not multi-thread safe) because all
the calls to this object are done in the event-thread.
*/
/**
* Creates a default instance.
* @param application Application this panel represents
*/
super(application);
}
/**
* Initializes this panel. Called soon after creation. In general this
* is where maps should be populated etc.
*/
public void initialize() {
createLayout();
}
/**
* Called just before the panel is shown: used to update the contents of the
* panel with new UserData (used in particular in the review panel).
*
* @param data the new user data.
*/
{
}
/**
* Called just after the panel is shown: used to set focus properly.
*/
public void endDisplay()
{
}
/**
* Tells whether the method beginDisplay can be long and so should be called
* outside the event thread.
* @return <CODE>true</CODE> if the method beginDisplay can be long and so
* should be called outside the event thread and <CODE>true</CODE> otherwise.
*/
public boolean blockingBeginDisplay()
{
return false;
}
/**
* Called when a progress change must be reflected in the panels. Only
* ProgressPanel overwrites this method and for all the others it stays empty.
* @param descriptor the descriptor of the Installation progress.
*/
{
}
/**
* Implements HyperlinkListener. When the user clicks on a link we will
* try to display the associated URL in the browser of the user.
*
* @param e the HyperlinkEvent.
*/
{
{
if (!isURLWorkerRunning(url))
{
/*
* Only launch the worker if there is not already a worker trying to
* display this URL.
*/
}
}
}
/**
* Returns the value corresponding to the provided FieldName.
* @param fieldName the FieldName for which we want to obtain the value.
* @return the value corresponding to the provided FieldName.
*/
{
return null;
}
/**
* Marks as invalid (or valid depending on the value of the invalid parameter)
* a field corresponding to FieldName. This basically implies udpating the
* style of the JLabel associated with fieldName (the association is done
* using the LabelFieldDescriptor class).
* @param fieldName the FieldName to be marked as valid or invalid.
* @param invalid whether to mark the field as valid or invalid.
*/
{
}
/**
* Returns the minimum width of the panel. This is used to calculate the
* minimum width of the dialog.
* @return the minimum width of the panel.
*/
public int getMinimumWidth()
{
// Just take the preferred width of the inputPanel because the
// instructionsPanel
// are too wide.
int width = 0;
if (inputPanel != null)
{
}
return width;
}
/**
* Returns the minimum height of the panel. This is used to calculate the
* minimum height of the dialog.
* @return the minimum height of the panel.
*/
public int getMinimumHeight()
{
return (int) getPreferredSize().getHeight();
}
/**
* Adds a button listener. All the button listeners will be notified when
* the buttons are clicked (by the user or programatically).
* @param l the ButtonActionListener to be added.
*/
{
buttonListeners.add(l);
}
/**
* Removes a button listener.
* @param l the ButtonActionListener to be removed.
*/
{
}
/**
* This method displays a working progress icon in the panel.
* @param visible whether the icon must be displayed or not.
*/
{
{
if (visible)
{
}
else
{
}
}
}
/**
* Returns the text to be displayed in the progress label for a give icon
* type.
* @param iconType the icon type.
* @return the text to be displayed in the progress label for a give icon
* type.
*/
{
{
}
else
{
}
return text;
}
/**
* Notifies the button action listeners that an event occurred.
* @param ev the button event to be notified.
*/
{
for (ButtonActionListener l : buttonListeners)
{
}
}
/**
* Creates the layout of the panel.
*
*/
protected void createLayout()
{
setLayout(new GridBagLayout());
setOpaque(false);
boolean somethingAdded = false;
if (titlePanel != null)
{
somethingAdded = true;
}
if (instructionsPanel != null)
{
if (somethingAdded)
{
} else
{
}
somethingAdded = true;
}
if (inputPanel != null)
{
inputContainer.setOpaque(false);
if (requiresScroll())
{
}
else
{
}
new GridBagConstraints());
if (somethingAdded)
{
} else
{
}
}
else
{
addVerticalGlue(this);
}
}
/**
* Creates and returns the panel that contains the layout specific to the
* panel.
* @return the panel that contains the layout specific to the
* panel.
*/
/**
* Returns the title of this panel.
* @return the title of this panel.
*/
/**
* Returns the instruction of this panel.
* @return the instruction of this panel.
*/
/**
* Commodity method that adds a vertical glue at the bottom of a given panel.
* @param panel the panel to which we want to add a vertical glue.
*/
{
}
/**
* This method is called by the URLWorker when it has finished its task.
* @param worker the URLWorker that finished its task.
*/
{
}
/**
* Tells whether the input panel should have a scroll or not.
* @return <CODE>true</CODE> if the input panel should have a scroll and
* <CODE>false</CODE> otherwise.
*/
protected boolean requiresScroll()
{
return true;
}
/**
* Returns <CODE>true</CODE> if this is a WebStart based installer and
* <CODE>false</CODE> otherwise.
* @return <CODE>true</CODE> if this is a WebStart based installer and
* <CODE>false</CODE> otherwise.
*/
protected boolean isWebStart()
{
return Utils.isWebStart();
}
/**
* Returns the formatter that will be used to display the messages in this
* panel.
* @return the formatter that will be used to display the messages in this
* panel.
*/
{
{
formatter = new HtmlProgressMessageFormatter();
}
return formatter;
}
/**
* Creates and returns the title panel.
* @return the title panel.
*/
{
{
p.setOpaque(false);
JLabel l =
titlePanel = p;
}
return titlePanel;
}
/**
* Creates and returns the instructions panel.
* @return the instructions panel.
*/
{
if (instructions != null)
{
JEditorPane p =
p.setOpaque(false);
p.setEditable(false);
p.addHyperlinkListener(this);
instructionsPanel = p;
}
return instructionsPanel;
}
/**
* Returns <CODE>true</CODE> if there is URLWorker running for the given url
* and <CODE>false</CODE> otherwise.
* @param url the url.
* @return <CODE>true</CODE> if there is URLWorker running for the given url
* and <CODE>false</CODE> otherwise.
*/
{
}
/**
* Starts a worker.
* @param worker the URLWorker to be started.
*/
{
}
}