提交 54af1e0c 编写于 作者: K Kohsuke Kawaguchi

Revisit the way default ListViewColumn set are calculated.

Instead of hard-coding the list, do this through @Extension(ordinal=...) mechanism.
This way, other plugins can add default columns in places that they control.
上级 48d29003
......@@ -31,7 +31,7 @@ public class BuildButtonColumn extends ListViewColumn {
public BuildButtonColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_ACTIONS_START-1)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -35,7 +35,8 @@ public class JobColumn extends ListViewColumn {
public JobColumn() {
}
@Extension
// put this in the middle of icons and properties
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_ICON_END+1)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -31,7 +31,7 @@ public class LastDurationColumn extends ListViewColumn {
public LastDurationColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_PROPERTIES_START-4)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -31,7 +31,7 @@ public class LastFailureColumn extends ListViewColumn {
public LastFailureColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_PROPERTIES_START-2)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -31,7 +31,7 @@ public class LastStableColumn extends ListViewColumn {
public LastStableColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_PROPERTIES_START-3)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -31,7 +31,7 @@ public class LastSuccessColumn extends ListViewColumn {
public LastSuccessColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_PROPERTIES_START-1)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -38,7 +38,6 @@ 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;
......@@ -124,21 +123,8 @@ public abstract class ListViewColumn implements ExtensionPoint, Describable<List
// 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)
for (Descriptor<ListViewColumn> d : ListViewColumn.all())
try {
if (d instanceof ListViewColumnDescriptor) {
ListViewColumnDescriptor ld = (ListViewColumnDescriptor) d;
......@@ -155,18 +141,22 @@ public abstract class ListViewColumn implements ExtensionPoint, Describable<List
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());
/*
Standard ordinal positions for built-in ListViewColumns.
There are icons at the very left that are generally used to show status,
then item name that comes in at the very end of that icon set.
Then the section of "properties" that show various properties of the item in text.
Finally, the section of action icons at the end.
*/
public static final double DEFAULT_COLUMNS_ORDINAL_ICON_START = 60;
public static final double DEFAULT_COLUMNS_ORDINAL_ICON_END = 50;
public static final double DEFAULT_COLUMNS_ORDINAL_PROPERTIES_START = 40;
public static final double DEFAULT_COLUMNS_ORDINAL_PROPERTIES_END = 30;
public static final double DEFAULT_COLUMNS_ORDINAL_ACTIONS_START = 20;
public static final double DEFAULT_COLUMNS_ORDINAL_ACTIONS_END = 10;
}
......@@ -37,7 +37,7 @@ public class StatusColumn extends ListViewColumn {
public StatusColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_ICON_START-1)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
......@@ -32,7 +32,7 @@ public class WeatherColumn extends ListViewColumn {
public WeatherColumn() {
}
@Extension
@Extension(ordinal=DEFAULT_COLUMNS_ORDINAL_ICON_START-2)
public static class DescriptorImpl extends ListViewColumnDescriptor {
@Override
public String getDisplayName() {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册