summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/models/GitClientApplication.java
blob: e5b2e6c4513c4121c2339f7dafa8439e81c128bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*
 * Copyright 2013 gitblit.com.
 *
 * 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.gitblit.models;

import java.io.Serializable;

import com.gitblit.Constants.AccessPermission;
import com.gitblit.utils.ArrayUtils;
import com.gitblit.utils.StringUtils;

/**
 * Model class to represent a git client application.
 *
 * @author James Moger
 *
 */
public class GitClientApplication implements Serializable {

	private static final long serialVersionUID = 1L;

	public String name;
	public String title;
	public String description;
	public String legal;
	public String icon;
	public String cloneUrl;
	public String command;
	public String productUrl;
	public String [] transports;
	public String[] platforms;
	public AccessPermission minimumPermission;
	public boolean isActive;

	public boolean allowsPlatform(String p) {
		if (ArrayUtils.isEmpty(platforms)) {
			// all platforms
			return true;
		}
		if (StringUtils.isEmpty(p)) {
			return false;
		}
		String plc = p.toLowerCase();
		for (String platform : platforms) {
			if (plc.contains(platform)) {
				return true;
			}
		}
		return false;
	}

	public boolean supportsTransport(String transportOrUrl) {
		if (ArrayUtils.isEmpty(transports)) {
			return true;
		}

		String scheme = transportOrUrl;
		if (transportOrUrl.indexOf(':') > -1) {
			// strip scheme
			scheme = transportOrUrl.substring(0, transportOrUrl.indexOf(':'));
		}

		for (String transport : transports) {
			if (transport.equalsIgnoreCase(scheme)) {
				return true;
			}
		}
		return false;
	}

	@Override
	public String toString() {
		return StringUtils.isEmpty(title) ? name : title;
	}
}
ansion ratio, which is relevant if there are more than one expanding row or column, but its value is irrelevant if there is only one. With multiple expanding rows or columns, the ratio parameter sets the relative portion how much a specific row/column will take in relation with the other expanding rows/columns. [source, java] ---- GridLayout grid = new GridLayout(3,2); // Layout containing relatively sized components must have // a defined size, here is fixed size. grid.setWidth("600px"); grid.setHeight("200px"); // Add some content String labels [] = { "Shrinking column<br/>Shrinking row", "Expanding column (1:)<br/>Shrinking row", "Expanding column (5:)<br/>Shrinking row", "Shrinking column<br/>Expanding row", "Expanding column (1:)<br/>Expanding row", "Expanding column (5:)<br/>Expanding row" }; for (int i=0; i<labels.length; i++) { Label label = new Label(labels[i], ContentMode.HTML); label.setWidth(null); // Set width as undefined grid.addComponent(label); } // Set different expansion ratios for the two columns grid.setColumnExpandRatio(1, 1); grid.setColumnExpandRatio(2, 5); // Set the bottom row to expand grid.setRowExpandRatio(1, 1); // Align and size the labels. for (int col=0; col<grid.getColumns(); col++) { for (int row=0; row<grid.getRows(); row++) { Component c = grid.getComponent(col, row); grid.setComponentAlignment(c, Alignment.TOP_CENTER); // Make the labels high to illustrate the empty // horizontal space. if (col != 0 || row != 0) c.setHeight("100%"); } } ---- [[figure.ui.gridlayout.sizing.expanding]] .Expanding rows and columns in [classname]#GridLayout# image::img/gridlayout_sizing_expanding.png[width=100%, scaledwidth=100%] If the size of the contained components is undefined or fixed, the expansion ratio is of the __excess__ space, as in <<figure.ui.gridlayout.sizing.expanding>> (excess horizontal space is shown in white). However, if the size of the all the contained components in the expanding rows or columns is defined as a percentage, the ratio is calculated from the __overall__ space available for the percentually sized components. For example, if we had a 100 pixels wide grid layout with two columns with 1.0 and 4.0 respective expansion ratios, and all the components in the grid were set as [methodname]#setWidth("100%")#, the columns would have respective widths of 20 and 80 pixels, regardless of the minimum size of their contained components. [[layout.gridlayout.css]] == CSS Style Rules [source, css] ---- .v-gridlayout {} .v-gridlayout-margin {} ---- The root element of the [classname]#GridLayout# component has `v-gridlayout` style. The `v-gridlayout-margin` is a simple element inside it that allows setting a padding between the outer element and the cells. For styling the individual grid cells, you should style the components inserted in the cells. Normally, if you want to have, for example, a different color for a certain cell, just make set the component inside it [methodname]#setSizeFull()#, and add a style name for it. Sometimes, you may need to wrap a component inside a layout component just for styling the cell.