// Copyright (C) 2008 The Android Open Source Project
//
// 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 com.google.gerrit.client.download;

import com.google.gerrit.client.Gerrit;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadCommand;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadScheme;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwtexpui.clippy.client.CopyableLabel;

import java.util.Set;

public abstract class DownloadPanel extends FlowPanel {
  protected String projectName;

  protected Set<DownloadScheme> allowedSchemes =
      Gerrit.getConfig().getDownloadSchemes();
  protected Set<DownloadCommand> allowedCommands =
      Gerrit.getConfig().getDownloadCommands();
  protected DownloadCommandLink.CopyableCommandLinkFactory cmdLinkfactory;

  protected DownloadCommandPanel commands = new DownloadCommandPanel();
  protected DownloadUrlPanel urls = new DownloadUrlPanel(commands);
  protected CopyableLabel copyLabel = new CopyableLabel("");

  public DownloadPanel(String project, String ref, boolean allowAnonymous) {
    this.projectName = project;

    copyLabel.setStyleName(Gerrit.RESOURCES.css().downloadLinkCopyLabel());
    urls.add(DownloadUrlLink.createDownloadUrlLinks(project, ref, allowAnonymous));
    cmdLinkfactory = new DownloadCommandLink.CopyableCommandLinkFactory(
        copyLabel, urls);

    populateDownloadCommandLinks();
    setupWidgets();
  }

  protected void setupWidgets() {
    if (!commands.isEmpty()) {
      final AccountGeneralPreferences pref;
      if (Gerrit.isSignedIn()) {
        pref = Gerrit.getUserAccount().getGeneralPreferences();
      } else {
        pref = new AccountGeneralPreferences();
        pref.resetToDefaults();
      }
      commands.select(pref.getDownloadCommand());
      urls.select(pref.getDownloadUrl());

      FlowPanel p = new FlowPanel();
      p.setStyleName(Gerrit.RESOURCES.css().downloadLinkHeader());
      p.add(commands);
      final InlineLabel glue = new InlineLabel();
      glue.setStyleName(Gerrit.RESOURCES.css().downloadLinkHeaderGap());
      p.add(glue);
      p.add(urls);

      add(p);
      add(copyLabel);
    }
  }

  protected abstract void populateDownloadCommandLinks();
}

// Copyright (C) 2008 The Android Open Source Project
//
// 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 com.google.gerrit.client.download;

import com.google.gerrit.client.Gerrit;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences;
import com.google.gerrit.reviewdb.client.AccountGeneralPreferences.DownloadCommand;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwtexpui.clippy.client.CopyableLabel;

import java.util.Set;

public abstract class DownloadPanel extends FlowPanel {
  protected String projectName;

  protected Set<DownloadCommand> allowedCommands =
      Gerrit.getConfig().getDownloadCommands();
  protected DownloadCommandLink.CopyableCommandLinkFactory cmdLinkfactory;

  protected DownloadCommandPanel commands = new DownloadCommandPanel();
  protected DownloadUrlPanel urls = new DownloadUrlPanel(commands);
  protected CopyableLabel copyLabel = new CopyableLabel("");

  public DownloadPanel(String project, String ref, boolean allowAnonymous) {
    this.projectName = project;

    copyLabel.setStyleName(Gerrit.RESOURCES.css().downloadLinkCopyLabel());
    urls.add(DownloadUrlLink.createDownloadUrlLinks(project, ref, allowAnonymous));
    cmdLinkfactory = new DownloadCommandLink.CopyableCommandLinkFactory(
        copyLabel, urls);

    populateDownloadCommandLinks();
    setupWidgets();
  }

  protected void setupWidgets() {
    if (!commands.isEmpty()) {
      final AccountGeneralPreferences pref;
      if (Gerrit.isSignedIn()) {
        pref = Gerrit.getUserAccount().getGeneralPreferences();
      } else {
        pref = new AccountGeneralPreferences();
        pref.resetToDefaults();
      }
      commands.select(pref.getDownloadCommand());
      urls.select(pref.getDownloadUrl());

      FlowPanel p = new FlowPanel();
      p.setStyleName(Gerrit.RESOURCES.css().downloadLinkHeader());
      p.add(commands);
      final InlineLabel glue = new InlineLabel();
      glue.setStyleName(Gerrit.RESOURCES.css().downloadLinkHeaderGap());
      p.add(glue);
      p.add(urls);

      add(p);
      add(copyLabel);
    }
  }

  protected abstract void populateDownloadCommandLinks();
}

Remove unused field from DownloadPanel