Skip to content

Commit

Permalink
Merge pull request #2217 from recena/JENKINS-31162
Browse files Browse the repository at this point in the history
[JENKINS-31162] Provide a new Item Category
  • Loading branch information
daniel-beck committed Apr 5, 2016
2 parents 964e967 + 8d717fe commit a9cc840
Show file tree
Hide file tree
Showing 8 changed files with 199 additions and 15 deletions.
2 changes: 1 addition & 1 deletion core/src/main/java/hudson/model/View.java
Expand Up @@ -56,9 +56,9 @@
import hudson.util.XStream2;
import hudson.views.ListViewColumn;
import hudson.widgets.Widget;
import jenkins.model.item_category.Categories;
import jenkins.model.Jenkins;
import jenkins.model.ModelObjectWithChildren;
import jenkins.model.item_category.Categories;
import jenkins.model.item_category.Category;
import jenkins.model.item_category.ItemCategory;
import jenkins.util.ProgressiveRendering;
Expand Down
24 changes: 24 additions & 0 deletions core/src/main/java/jenkins/model/item_category/Categories.java
@@ -1,3 +1,27 @@
/*
* The MIT License
*
* Copyright (c) 2016 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package jenkins.model.item_category;

import org.kohsuke.accmod.Restricted;
Expand Down
24 changes: 24 additions & 0 deletions core/src/main/java/jenkins/model/item_category/Category.java
@@ -1,3 +1,27 @@
/*
* The MIT License
*
* Copyright 2016 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package jenkins.model.item_category;

import hudson.model.TopLevelItem;
Expand Down
31 changes: 27 additions & 4 deletions core/src/main/java/jenkins/model/item_category/ItemCategory.java
@@ -1,17 +1,40 @@
/*
* The MIT License
*
* Copyright (c) 2016 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package jenkins.model.item_category;

import hudson.Extension;
import hudson.ExtensionList;
import hudson.ExtensionPoint;
import hudson.model.TopLevelItemDescriptor;
import jenkins.model.Messages;

import javax.annotation.Nonnull;

/**
* A category for {@link hudson.model.Item}s.
*
* @since TODO
* @since 2.0
*/
public abstract class ItemCategory implements ExtensionPoint {

Expand Down Expand Up @@ -92,12 +115,12 @@ public String getId() {

@Override
public String getDescription() {
return Messages.ItemCategory_Uncategorized_Description();
return Messages.Uncategorized_Description();
}

@Override
public String getDisplayName() {
return Messages.ItemCategory_Uncategorized_DisplayName();
return Messages.Uncategorized_DisplayName();
}

@Override
Expand Down
@@ -0,0 +1,67 @@
/*
* The MIT License
*
* Copyright (c) 2016 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package jenkins.model.item_category;

import hudson.Extension;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.DoNotUse;

/**
* Designed for project hierarchies with folders.
*
* This category should be moved to cloudbees-folder-plugin short-term.
* Really when upgrades its baseline to 2.0.
*
* @since 2.0
*/
@Restricted(DoNotUse.class)
@Extension(ordinal = -100)
public class NestedProjectsCategory extends ItemCategory {

/**
* TODO Make public when be moved to cloudbees-folder-plugin.
*/
private static final String ID = "nested-projects";

@Override
public String getId() {
return ID;
}

@Override
public String getDescription() {
return Messages.NestedProjects_Description();
}

@Override
public String getDisplayName() {
return Messages.NestedProjects_DisplayName();
}

@Override
public int getMinToShow() {
return ItemCategory.MIN_TOSHOW;
}
}
@@ -1,15 +1,38 @@
/*
* The MIT License
*
* Copyright (c) 2016 CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/

package jenkins.model.item_category;

import hudson.Extension;
import jenkins.model.Messages;

/**
* A generic {@link ItemCategory}
* Designed for projects with a self-contained configuration and history.
*/
@Extension(ordinal = -100)
public class StandaloneProjectsCategory extends ItemCategory {

public static final String ID = "standaloneprojects";
public static final String ID = "standalone-projects";

@Override
public String getId() {
Expand All @@ -18,12 +41,12 @@ public String getId() {

@Override
public String getDescription() {
return Messages.ItemCategory_StandaloneProjects_Description();
return Messages.StandaloneProjects_Description();
}

@Override
public String getDisplayName() {
return Messages.ItemCategory_StandaloneProjects_DisplayName();
return Messages.StandaloneProjects_DisplayName();
}

@Override
Expand Down
5 changes: 0 additions & 5 deletions core/src/main/resources/jenkins/model/Messages.properties
Expand Up @@ -71,8 +71,3 @@ ParameterizedJobMixIn.build_now=Build Now
BlockedBecauseOfBuildInProgress.shortDescription=Build #{0} is already in progress{1}
BlockedBecauseOfBuildInProgress.ETA=\ (ETA:{0})
BuildDiscarderProperty.displayName=Discard Old Builds

ItemCategory.Uncategorized.DisplayName=Uncategorized
ItemCategory.Uncategorized.Description=Item types that have not yet been categorized by their plugin maintainer.
ItemCategory.StandaloneProjects.DisplayName=Standalone Projects
ItemCategory.StandaloneProjects.Description=Create projects with a self-contained configuration and history. These projects can be at the top-level or grouped within folders.
@@ -0,0 +1,28 @@
# The MIT License
#
# Copyright (c) 2016, CloudBees, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

Uncategorized.DisplayName=Uncategorized
Uncategorized.Description=Item types that have not yet been categorized by their plugin maintainer.
StandaloneProjects.DisplayName=Standalone Projects
StandaloneProjects.Description=Create projects with a self-contained configuration and history. These projects can be at the top-level or grouped within folders.
NestedProjects.DisplayName=Nested Projects
NestedProjects.Description=Create project categories or project hierarchies with folders. Folders can be created manually or automatically based on repositories.

0 comments on commit a9cc840

Please sign in to comment.