blob: 350dbed9f3b0925e9e7e2c8bc3ff8f56aba7c355 [file] [log] [blame]
// 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();
}