import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.tizen.common.util.DialogUtil;
+import org.tizen.common.util.ImageUtil;
import org.tizen.common.util.SWTUtil;
+import org.tizen.nativeplatform.Activator;
+import org.tizen.nativeplatform.pkgmgr.ui.AddRepoDialog;
+import org.tizen.nativeplatform.pkgmgr.ui.ModifyRepoDialog;
import org.tizen.nativeplatform.rootstrap.SnapshotURLParser;
import org.tizen.nativeplatform.ui.provider.RepoTableViewerProvider;
import org.tizen.nativeplatform.util.TableUtil;
public class RemoteRepoTab implements IRepositoryTab {
- protected TableViewer repoViewer = null;
protected CheckboxTableViewer pkgViewer = null;
protected Combo categoryCombo;
protected Text filterText;
private void createSettingRepoComposite(Composite parent) {
Group group = new Group(parent, SWT.NONE);
- group.setLayout(new GridLayout(1, false));
+ group.setLayout(new GridLayout(2, false));
group.setText(resources.getString("GenRootDlg.Group.Repos"));
GridData gridData = new GridData(GridData.FILL_HORIZONTAL
| GridData.VERTICAL_ALIGN_BEGINNING);
group.setLayoutData(gridData);
- createTreeViewer(group);
+ createRepositoryTable(group);
+ createRepositoryButtons(group);
}
private void createGenButtonComposite(Composite parent) {
reposURLViewer.setInput(data);
noityModified();
}
+
+ private void moveUpRepository(int index) {
+ String repo_1 = (String)reposURLViewer.getTable().getItem(index).getData();
+ String name_1 = repo_1.split("[|]")[0];
+ String url_1 = repo_1.split("[|]")[1];
+
+ String repo_2 = (String)reposURLViewer.getTable().getItem(index-1).getData();
+ String name_2 = repo_2.split("[|]")[0];
+ String url_2 = repo_2.split("[|]")[1];
+
+ String data_1 = String.format("%s|%s", name_2, url_1);
+ String data_2 = String.format("%s|%s", name_1, url_2);
+
+ List<String> repos = (List<String>)reposURLViewer.getInput();
+ repos.remove(index-1);
+ repos.add(index-1, data_1);
+ repos.remove(index);
+ repos.add(index, data_2);
+ reposURLViewer.setInput(repos);
+ reposURLViewer.getTable().setSelection(index-1);
+ noityModified();
+ }
+
+ private void moveDownRepository(int index) {
+ String repo_1 = (String)reposURLViewer.getTable().getItem(index).getData();
+ String name_1 = repo_1.split("[|]")[0];
+ String url_1 = repo_1.split("[|]")[1];
+
+ String repo_2 = (String)reposURLViewer.getTable().getItem(index+1).getData();
+ String name_2 = repo_2.split("[|]")[0];
+ String url_2 = repo_2.split("[|]")[1];
+
+ String data_1 = String.format("%s|%s", name_2, url_1);
+ String data_2 = String.format("%s|%s", name_1, url_2);
+
+ List<String> repos = (List<String>)reposURLViewer.getInput();
+ repos.remove(index+1);
+ repos.add(index+1, data_1);
+ repos.remove(index);
+ repos.add(index, data_2);
+ reposURLViewer.setInput(repos);
+ reposURLViewer.getTable().setSelection(index+1);
+ noityModified();
+ }
+
+ private void modifyRepository(int index, String newRepo) {
+ List<String> repos = (List<String>)reposURLViewer.getInput();
+ String repo = repos.get(index);
+ String name = repo.split("[|]")[0];
+ String newData = String.format("%s|%s", name, newRepo);
+ repos.remove(index);
+ repos.add(index, newData);
+ reposURLViewer.setInput(repos);
+ noityModified();
+ }
+
+ private void removeRepository(int index) {
+ String data = (String)reposURLViewer.getTable().getItem(index).getData();
+ int idx = 0;
+ List<String> repos = (List<String>)reposURLViewer.getInput();
+ List<String> newRepos = new ArrayList<String>();
+ for (String repo : repos) {
+ if (!repo.equals(data)) {
+ String url = repo.split("[|]")[1];
+ newRepos.add(String.format("url%d|%s", idx++, url));
+ }
+ }
+ reposURLViewer.setInput(newRepos);
+ noityModified();
+ }
+
+ private void addRepository(String newRepo) {
+ List<String> repos = (List<String>)reposURLViewer.getInput();
+ int idx = repos.size();
+ String newData = String.format("url%d|%s", idx, newRepo);
+ repos.add(newData);
+ reposURLViewer.setInput(repos);
+ noityModified();
+ }
+
private void noityModified() {
listener.modified();
}
- private void createTreeViewer(Composite parent) {
+ private void createRepositoryTable(Composite parent) {
reposURLViewer = new TableViewer(parent, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
Table table = reposURLViewer.getTable();
table.setLayoutData(tableGridData);
reposURLViewer.setInput(new ArrayList<ICheckTreeItem>());
}
+
+ private void createRepositoryButtons(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 1;
+ gridLayout.marginWidth = 0;
+ gridLayout.marginHeight = 0;
+ composite.setLayout(gridLayout);
+
+ Button add_bt = new Button(composite, SWT.PUSH);
+ Image addIcon = ImageUtil.getImage(Activator.PLUGIN_ID, "icons/rootstrap/add.gif");
+ add_bt.setImage(addIcon);
+ add_bt.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ AddRepoDialog dialog = new AddRepoDialog(shell,"Rootstrap", false);
+ if (dialog.open() != AddRepoDialog.OK) {
+ return;
+ }
+ String url = dialog.getRepositoryURL();
+ addRepository(url);
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ }
+
+ });
+
+ Button remove_bt = new Button(composite, SWT.PUSH);
+ Image removeIcon = ImageUtil.getImage(Activator.PLUGIN_ID, "icons/rootstrap/remove.gif");
+ remove_bt.setImage(removeIcon);
+ remove_bt.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ int selectedIdx = reposURLViewer.getTable().getSelectionIndex();
+ removeRepository(selectedIdx);
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ }
+ });
+
+ Button modify_bt = new Button(composite, SWT.PUSH);
+ Image modifyIcon = ImageUtil.getImage(Activator.PLUGIN_ID, "icons/rootstrap/edit.gif");
+ modify_bt.setImage(modifyIcon);
+ modify_bt.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ int selectedIdx = reposURLViewer.getTable().getSelectionIndex();
+ String repo = (String)reposURLViewer.getTable().getItem(selectedIdx).getData();
+ String name = repo.split("[|]")[0];
+ String url = repo.split("[|]")[1];
+ ModifyRepoDialog dialog = new ModifyRepoDialog(shell, "Rootstrap", name, url, false);
+ if (dialog.open() != ModifyRepoDialog.OK) {
+ return;
+ }
+ if (dialog.isDirty()) {
+ String newUrl = dialog.getRepositoryURL();
+ modifyRepository(selectedIdx, newUrl);
+ }
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ }
+ });
+
+ Button moveup_bt = new Button(composite, SWT.PUSH);
+ Image moveupIcon = ImageUtil.getImage(Activator.PLUGIN_ID, "icons/list-moveup.gif");
+ moveup_bt.setImage(moveupIcon);
+ moveup_bt.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ int selectedIdx = reposURLViewer.getTable().getSelectionIndex();
+ if (selectedIdx < 1) {
+ return;
+ }
+ moveUpRepository(selectedIdx);
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ }
+ });
+
+ Button movedown_bt = new Button(composite, SWT.PUSH);
+ Image movedownIcon = ImageUtil.getImage(Activator.PLUGIN_ID, "icons/list-movedown.gif");
+ movedown_bt.setImage(movedownIcon);
+ movedown_bt.addMouseListener(new MouseListener() {
+
+ @Override
+ public void mouseDoubleClick(MouseEvent e) {
+ }
+
+ @Override
+ public void mouseDown(MouseEvent e) {
+ int size = ((List<String>)reposURLViewer.getInput()).size();
+ int selectedIdx = reposURLViewer.getTable().getSelectionIndex();
+ if (selectedIdx >= size-1) {
+ return;
+ }
+ moveDownRepository(selectedIdx);
+ }
+
+ @Override
+ public void mouseUp(MouseEvent e) {
+ }
+ });
+ }
@Override
public String getArchitecture() {