blob: 53fded553a8aa3fbed23138a258dd8c212076381 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* 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.intellij.lang.ant.config.impl.configuration;
import com.intellij.lang.ant.config.impl.AllJarsUnderDirEntry;
import com.intellij.lang.ant.config.impl.AntClasspathEntry;
import com.intellij.lang.ant.config.impl.SinglePathEntry;
import com.intellij.ui.ListUtil;
import com.intellij.util.config.AbstractProperty;
import com.intellij.util.config.ListProperty;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class AntClasspathEditorPanel extends JPanel {
private ListProperty<AntClasspathEntry> myClasspathProperty;
private final Form myForm = new Form();
private UIPropertyBinding.Composite myBinding;
public AntClasspathEditorPanel() {
super(new BorderLayout());
add(myForm.myWholePanel, BorderLayout.CENTER);
}
public UIPropertyBinding setClasspathProperty(ListProperty<AntClasspathEntry> classpathProperty) {
myClasspathProperty = classpathProperty;
myBinding = new UIPropertyBinding.Composite();
UIPropertyBinding.OrderListBinding<AntClasspathEntry> classpathBinding = myBinding.bindList(myForm.myClasspathList, myClasspathProperty);
classpathBinding.addAddManyFacility(myForm.myAddButton,
new SinglePathEntry.AddEntriesFactory(myForm.myClasspathList));
classpathBinding.addAddManyFacility(myForm.myAddAllInDir,
new AllJarsUnderDirEntry.AddEntriesFactory(myForm.myClasspathList));
myBinding.addBinding(new UIPropertyBinding() {
public void loadValues(AbstractProperty.AbstractPropertyContainer container) {
}
public void apply(AbstractProperty.AbstractPropertyContainer container) {
}
public void beDisabled() {
myForm.enableButtons(false);
}
public void beEnabled() {
myForm.enableButtons(true);
}
public void addAllPropertiesTo(Collection<AbstractProperty> properties) {
}
});
return myBinding;
}
public static class Form {
private JButton myAddButton;
private JButton myAddAllInDir;
private JButton myRemoveButton;
private JButton myMoveUpButton;
private JButton myMoveDownButton;
private JPanel myWholePanel;
private JList myClasspathList;
private final ArrayList<ListUtil.Updatable> myUpdatables = new ArrayList<ListUtil.Updatable>();
public Form() {
myClasspathList.setCellRenderer(new AntUIUtil.ClasspathRenderer());
myUpdatables.add(ListUtil.addRemoveListener(myRemoveButton, myClasspathList));
myUpdatables.add(ListUtil.addMoveUpListener(myMoveUpButton, myClasspathList));
myUpdatables.add(ListUtil.addMoveDownListener(myMoveDownButton, myClasspathList));
}
public void enableButtons(boolean enable) {
for (Iterator<ListUtil.Updatable> iterator = myUpdatables.iterator(); iterator.hasNext();) {
ListUtil.Updatable updatable = iterator.next();
updatable.enable(enable);
}
}
}
public JComponent getPreferedFocusComponent() {
return myForm.myClasspathList;
}
}