package org.limewire.ui.swing.library.sharing;
import java.awt.Font;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.event.HyperlinkEvent.EventType;
import net.miginfocom.swing.MigLayout;
import org.jdesktop.application.Resource;
import org.limewire.ui.swing.components.HTMLLabel;
import org.limewire.ui.swing.friends.actions.LoginAction;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.I18n;
import ca.odell.glazedlists.EventList;
import com.google.inject.Inject;
import com.google.inject.Provider;
/** Creates Login Panel for inner sharing Nav. */
class LibrarySharingLoginPanel {
@Resource
private Font textFont;
private static final String SIGN_IN = "#signin";
private static final String STOP_SHARING = "#stopsharing";
private final HTMLLabel htmlLabel;
private final JPanel component;
private boolean hasShared;
private boolean loggedOut;
@Inject
public LibrarySharingLoginPanel(final Provider<LoginAction> loginAction,
final Provider<StopSharingAction> stopSharing) {
GuiUtils.assignResources(this);
component = new JPanel(new MigLayout("", "134!", ""));
component.setOpaque(false);
htmlLabel = new HTMLLabel("<html>" + I18n.tr("<a href={0}>Sign in</a> to share this list.", SIGN_IN) + "</html>");
htmlLabel.setHtmlFont(textFont);
htmlLabel.setOpenUrlsNatively(false);
htmlLabel.setOpaque(false);
htmlLabel.addHyperlinkListener(new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (EventType.ACTIVATED == e.getEventType()) {
if (e.getDescription().equals(SIGN_IN)) {
loginAction.get().actionPerformed(null);
} else if (e.getDescription().equals(STOP_SHARING)) {
stopSharing.get().actionPerformed(null);
}
}
}
});
component.add(htmlLabel, "width 94%");
}
public JComponent getComponent() {
return component;
}
/** Sets the new set of people that this list is shared with. */
void setSharedFriendIds(EventList<String> friendIds) {
hasShared = !friendIds.isEmpty();
setMessage();
}
private void setMessage() {
if(!loggedOut) {
htmlLabel.setText("<html>" + I18n.tr("Logging in...") + "</html>");
} else if(hasShared) {
htmlLabel.setText("<html>" + I18n.tr("<a href={0}>Sign in</a> to share this list or edit sharing, or <a href={1}>stop sharing</a> it now.", SIGN_IN, STOP_SHARING) + "</html>");
} else {
htmlLabel.setText("<html>" + I18n.tr("<a href={0}>Sign in</a> to share this list.", SIGN_IN) + "</html>");
}
}
void setLoggingIn(boolean loggingIn) {
loggedOut = !loggingIn;
setMessage();
}
}