aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamian Minkov <damencho@jitsi.org>2013-11-22 19:57:11 +0200
committerDamian Minkov <damencho@jitsi.org>2013-11-22 19:58:04 +0200
commitc067eef9b22dada6c38c05452cc6a7038a70f8c6 (patch)
tree1a47d03ae99344bf3405822edb11c6d512012b14
parent0178ea0e99397b6aa8ccb21d1c349f7ab493e14d (diff)
downloadjitsi-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.
-rw-r--r--src/net/java/sip/communicator/impl/gui/customcontrols/wizard/Wizard.java2
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/account/AccountRegSummaryPage.java43
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/account/AccountRegWizardContainerImpl.java34
-rw-r--r--src/net/java/sip/communicator/service/protocol/AccountID.java11
-rw-r--r--src/net/java/sip/communicator/service/protocol/ProtocolProviderFactory.java6
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.
*/