diff options
author | Damian Minkov <damencho@jitsi.org> | 2013-11-22 19:57:11 +0200 |
---|---|---|
committer | Damian Minkov <damencho@jitsi.org> | 2013-11-22 19:58:04 +0200 |
commit | c067eef9b22dada6c38c05452cc6a7038a70f8c6 (patch) | |
tree | 1a47d03ae99344bf3405822edb11c6d512012b14 | |
parent | 0178ea0e99397b6aa8ccb21d1c349f7ab493e14d (diff) | |
download | jitsi-c067eef9b22dada6c38c05452cc6a7038a70f8c6.zip jitsi-c067eef9b22dada6c38c05452cc6a7038a70f8c6.tar.gz jitsi-c067eef9b22dada6c38c05452cc6a7038a70f8c6.tar.bz2 |
Adds read only property to the account properties, when enabled the account settings cannot be modified.
5 files changed, 95 insertions, 1 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/customcontrols/wizard/Wizard.java b/src/net/java/sip/communicator/impl/gui/customcontrols/wizard/Wizard.java index 05c4387..2a2bc06 100644 --- a/src/net/java/sip/communicator/impl/gui/customcontrols/wizard/Wizard.java +++ b/src/net/java/sip/communicator/impl/gui/customcontrols/wizard/Wizard.java @@ -95,7 +95,7 @@ public class Wizard private WizardController wizardController; - private TransparentPanel cardPanel; + protected TransparentPanel cardPanel; private CardLayout cardLayout; diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java index 4e4adba..0c25309 100644 --- a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java +++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java @@ -37,6 +37,11 @@ public class AccountRegSummaryPage private final AccountRegWizardContainerImpl wizardContainer; /** + * In case of modification the modified protocol provider is supplied. + */ + private ProtocolProviderService protocolProviderService; + + /** * Creates an <tt>AccountRegSummaryPage</tt>. * * @param wizardContainer The account registration wizard container where @@ -144,6 +149,14 @@ public class AccountRegSummaryPage this.valuesPanel.removeAll(); this.init(wizard.getSummary()); + + if(protocolProviderService != null + && protocolProviderService.getAccountID().isReadOnly()) + { + // disable commit button as the account is readonly + // we will just show its values + wizardContainer.setNextFinishButtonEnabled(false); + } } /** @@ -156,6 +169,12 @@ public class AccountRegSummaryPage AccountRegistrationWizard wizard = this.wizardContainer.getCurrentWizard(); + if(this.protocolProviderService != null) + { + // we do not need it anymore + protocolProviderService = null; + } + try { ProtocolProviderService protocolProvider = wizard.signin(); @@ -217,4 +236,28 @@ public class AccountRegSummaryPage public void pageShown() { } + + /** + * Sets the modification property to indicate if this wizard is opened for + * a modification. + * + * @param protocolProvider indicates that this wizard is opened for + * modification. + */ + public void setModification(ProtocolProviderService protocolProvider) + { + this.protocolProviderService = protocolProvider; + } + + @Override + public void dispose() + { + super.dispose(); + + if(this.protocolProviderService != null) + { + // we do not need it anymore + protocolProviderService = null; + } + } } diff --git a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java index d3df6af..e7baed8 100644 --- a/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java +++ b/src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java @@ -5,10 +5,15 @@ */ package net.java.sip.communicator.impl.gui.main.account; +import java.awt.*; +import java.awt.Container; import java.io.*; import java.util.*; +import java.util.List; import javax.imageio.*; +import javax.swing.*; +import javax.swing.text.*; import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.customcontrols.wizard.*; @@ -146,11 +151,40 @@ public class AccountRegWizardContainerImpl this.setCurrentWizard(wizard); wizard.setModification(true); + this.summaryPage.setModification(protocolProvider); + + if(protocolProvider != null + && protocolProvider.getAccountID().isReadOnly()) + { + // cardPanel is the main panel of the wizard pages + setDisabled(cardPanel.getComponents()); + } wizard.loadAccount(protocolProvider); } /** + * Disables all editable components. Used to enable readonly accounts + * to only show their values and forbid the user to edit. + * + * @param components the components to disable + */ + private void setDisabled(Component[] components) + { + for(Component c : components) + { + if(c instanceof JTextComponent) + ((JTextComponent)c).setEditable(false); + else if(c instanceof JComboBox + || c instanceof AbstractButton) + c.setEnabled(false); + + if(c instanceof Container) + setDisabled(((Container)c).getComponents()); + } + } + + /** * Returns the wizard corresponding to the given protocol provider. * * @param protocolProvider the <tt>ProtocolProviderService</tt>, which diff --git a/src/net/java/sip/communicator/service/protocol/AccountID.java b/src/net/java/sip/communicator/service/protocol/AccountID.java index d614874..881730e 100644 --- a/src/net/java/sip/communicator/service/protocol/AccountID.java +++ b/src/net/java/sip/communicator/service/protocol/AccountID.java @@ -720,6 +720,17 @@ public abstract class AccountID } /** + * Checks if the account is marked as readonly. + * @return <tt>true</tt> if the account is marked as readonly or + * <tt>false</tt> otherwise. + */ + public boolean isReadOnly() + { + return getAccountPropertyString( + ProtocolProviderFactory.IS_ACCOUNT_READ_ONLY) != null; + } + + /** * Returns the first <tt>ProtocolProviderService</tt> implementation * corresponding to the preferred protocol * diff --git a/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java b/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java index ec7167c..3873ca4 100644 --- a/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java +++ b/src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java @@ -315,6 +315,12 @@ public abstract class ProtocolProviderFactory /**
* The name of the property that would indicate if a given account
+ * configuration is read only.
+ */
+ public static final String IS_ACCOUNT_READ_ONLY = "IS_READ_ONLY";
+
+ /**
+ * The name of the property that would indicate if a given account
* groups are readonly, values can be all or a comma separated
* group names including root.
*/
|