提交 bb4fde4a 编写于 作者: K Kohsuke Kawaguchi

exposed createDefaultInitialColumnList so that it can be used from outside ListView

上级 407926c6
......@@ -24,39 +24,25 @@
*/
package hudson.model;
import hudson.DescriptorExtensionList;
import hudson.Util;
import hudson.Extension;
import hudson.views.BuildButtonColumn;
import hudson.views.JobColumn;
import hudson.views.LastDurationColumn;
import hudson.views.LastFailureColumn;
import hudson.views.LastSuccessColumn;
import hudson.views.ListViewColumn;
import hudson.views.ListViewColumnDescriptor;
import hudson.views.StatusColumn;
import hudson.views.ViewJobFilter;
import hudson.views.WeatherColumn;
import hudson.Util;
import hudson.model.Descriptor.FormException;
import hudson.util.CaseInsensitiveComparator;
import hudson.util.DescribableList;
import hudson.util.FormValidation;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import hudson.views.ListViewColumn;
import hudson.views.ViewJobFilter;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.SortedSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.TreeSet;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
......@@ -120,44 +106,10 @@ public class ListView extends View implements Saveable {
}
protected void initColumns() {
if (columns != null) {
// already persisted
return;
}
// OK, set up default list of columns:
// create all instances
ArrayList<ListViewColumn> r = new ArrayList<ListViewColumn>();
DescriptorExtensionList<ListViewColumn, Descriptor<ListViewColumn>> all = ListViewColumn.all();
ArrayList<Descriptor<ListViewColumn>> left = new ArrayList<Descriptor<ListViewColumn>>(all);
for (Class<? extends ListViewColumn> d: DEFAULT_COLUMNS) {
Descriptor<ListViewColumn> des = all.find(d);
if (des != null) {
try {
r.add(des.newInstance(null, null));
left.remove(des);
} catch (FormException e) {
LOGGER.log(Level.WARNING, "Failed to instantiate "+des.clazz,e);
}
}
}
for (Descriptor<ListViewColumn> d : left)
try {
if (d instanceof ListViewColumnDescriptor) {
ListViewColumnDescriptor ld = (ListViewColumnDescriptor) d;
if (!ld.shownByDefault()) continue; // skip this
}
ListViewColumn lvc = d.newInstance(null, null);
if (!lvc.shownByDefault()) continue; // skip this
r.add(lvc);
} catch (FormException e) {
LOGGER.log(Level.WARNING, "Failed to instantiate "+d.clazz,e);
}
columns = new DescribableList<ListViewColumn, Descriptor<ListViewColumn>>(this,r);
if (columns == null)
columns = new DescribableList<ListViewColumn, Descriptor<ListViewColumn>>(this,ListViewColumn.createDefaultInitialColumnList());
}
protected void initJobFilters() {
if (jobFilters != null) {
return;
......@@ -320,35 +272,11 @@ public class ListView extends View implements Saveable {
}
}
public static List<ListViewColumn> getDefaultColumns() {
ArrayList<ListViewColumn> r = new ArrayList<ListViewColumn>();
DescriptorExtensionList<ListViewColumn, Descriptor<ListViewColumn>> all = ListViewColumn.all();
for (Class<? extends ListViewColumn> t : DEFAULT_COLUMNS) {
Descriptor<ListViewColumn> d = all.find(t);
if (d != null) {
try {
r.add (d.newInstance(null, null));
} catch (FormException e) {
LOGGER.log(Level.WARNING, "Failed to instantiate "+d.clazz,e);
}
}
}
return Collections.unmodifiableList(r);
}
private static final Logger LOGGER = Logger.getLogger(ListView.class.getName());
/**
* Traditional column layout before the {@link ListViewColumn} becomes extensible.
* @deprecated as of 1.391
* Use {@link ListViewColumn#createDefaultInitialColumnList()}
*/
private static final List<Class<? extends ListViewColumn>> DEFAULT_COLUMNS = Arrays.asList(
StatusColumn.class,
WeatherColumn.class,
JobColumn.class,
LastSuccessColumn.class,
LastFailureColumn.class,
LastDurationColumn.class,
BuildButtonColumn.class
);
public static List<ListViewColumn> getDefaultColumns() {
return ListViewColumn.createDefaultInitialColumnList();
}
}
......@@ -24,9 +24,11 @@
package hudson.views;
import hudson.DescriptorExtensionList;
import hudson.Extension;
import hudson.ExtensionPoint;
import hudson.model.Describable;
import hudson.model.Descriptor;
import hudson.model.Descriptor.FormException;
import hudson.model.Hudson;
import hudson.model.Item;
import hudson.model.ItemGroup;
......@@ -35,6 +37,12 @@ import hudson.model.View;
import hudson.util.DescriptorList;
import org.kohsuke.stapler.export.Exported;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
* Extension point for adding a column to a table rendering of {@link Item}s, such as {@link ListView}.
*
......@@ -107,4 +115,58 @@ public abstract class ListViewColumn implements ExtensionPoint, Describable<List
public Descriptor<ListViewColumn> getDescriptor() {
return Hudson.getInstance().getDescriptorOrDie(getClass());
}
/**
* Creates the list of {@link ListViewColumn}s to be used for newly created {@link ListView}s and their likes.
* @since 1.391
*/
public static List<ListViewColumn> createDefaultInitialColumnList() {
// OK, set up default list of columns:
// create all instances
ArrayList<ListViewColumn> r = new ArrayList<ListViewColumn>();
DescriptorExtensionList<ListViewColumn, Descriptor<ListViewColumn>> all = ListViewColumn.all();
ArrayList<Descriptor<ListViewColumn>> left = new ArrayList<Descriptor<ListViewColumn>>(all);
for (Class<? extends ListViewColumn> d: DEFAULT_COLUMNS) {
Descriptor<ListViewColumn> des = all.find(d);
if (des != null) {
try {
r.add(des.newInstance(null, null));
left.remove(des);
} catch (FormException e) {
LOGGER.log(Level.WARNING, "Failed to instantiate "+des.clazz,e);
}
}
}
for (Descriptor<ListViewColumn> d : left)
try {
if (d instanceof ListViewColumnDescriptor) {
ListViewColumnDescriptor ld = (ListViewColumnDescriptor) d;
if (!ld.shownByDefault()) continue; // skip this
}
ListViewColumn lvc = d.newInstance(null, null);
if (!lvc.shownByDefault()) continue; // skip this
r.add(lvc);
} catch (FormException e) {
LOGGER.log(Level.WARNING, "Failed to instantiate "+d.clazz,e);
}
return r;
}
/**
* Traditional column layout before the {@link ListViewColumn} becomes extensible.
*/
private static final List<Class<? extends ListViewColumn>> DEFAULT_COLUMNS = Arrays.asList(
StatusColumn.class,
WeatherColumn.class,
JobColumn.class,
LastSuccessColumn.class,
LastFailureColumn.class,
LastDurationColumn.class,
BuildButtonColumn.class
);
private static final Logger LOGGER = Logger.getLogger(ListViewColumn.class.getName());
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册