aboutsummaryrefslogtreecommitdiffstats
path: root/tests/unit/button/options.js
blob: 23020fc100c2d62c9f33e4bef121071af45b4062 (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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
define( [
	"jquery",
	"ui/button"
], function( $ ) {

module( "button: options" );

test( "disabled, explicit value", function( assert ) {
	expect( 7 );

	var element = $( "#radio01" ).button({ disabled: false });
	deepEqual( element.button( "option", "disabled" ), false, "disabled option set to false" );
	deepEqual( element.prop( "disabled" ), false, "element is disabled" );

	assert.lacksClasses( element.button( "widget" ), "ui-state-disabled ui-button-disabled" );

	element = $( "#radio02" ).button({ disabled: true });

	ok( !element.button( "widget" ).attr( "aria-disabled" ), "element does not get aria-disabled" );
	assert.hasClasses( element.button( "widget" ), "ui-button-disabled ui-state-disabled" );

	deepEqual( element.button( "option", "disabled" ), true, "disabled option set to true" );
	deepEqual( element.prop( "disabled" ), true, "element is not disabled" );
});

test("disabled, null", function() {
	expect( 4 );
	$("#radio01").button({ disabled: null });
	deepEqual(false, $("#radio01").button("option", "disabled"),
		"disabled option set to false");
	deepEqual(false, $("#radio01").prop("disabled"), "element is disabled");

	$("#radio02").prop("disabled", true).button({ disabled: null });
	deepEqual(true, $("#radio02").button("option", "disabled"),
		"disabled option set to true");
	deepEqual(true, $("#radio02").prop("disabled"), "element is not disabled");
});

test( "disabled, ui-state-active is removed unless checkbox or radio", function( assert ) {
	expect( 12 );
	var elements = [
		$( "<input type='button'>" ),
		$( "<button></button>" ),
		$( "<a></a>" ),
		$( "<div></div>" ),
		$( "<input type='checkbox' id='checkbox' checked><label for='checkbox'></label>" ),
		$( "<input type='radio' id='radio' checked><label for='radio'></label>" )
	];

	$.each( elements, function() {
		var element = $( this ).first().button(),
			buttonElement = element.button( "widget" ),
			elementType = element.prop( "nodeName" ).toLowerCase();

		if ( element.is( "input" ) ) {
			elementType += ":" + element.attr( "type" );
		}

		element.trigger( "mousedown" );
		assert.hasClasses( buttonElement, "ui-state-active",
			"[" + elementType + "] has ui-state-active class after mousedown." );

		element.button( "disable" );
		if ( element.is( "[type=checkbox], [type=radio]" ) ) {
		assert.hasClasses( buttonElement, "ui-state-active",
				"Disabled [" + elementType + "] has ui-state-active class." );
		} else {
			assert.lacksClasses( buttonElement, "ui-state-active",
				"Disabled [" + elementType + "] does not have ui-state-active class." );
		}
	});
});

test("text false without icon", function() {
	expect( 1 );
	$("#button").button({
		text: false
	});
	ok( $("#button").is(".ui-button-text-only:not(.ui-button-icon-only)") );

	$("#button").button("destroy");
});

test("text false with icon", function() {
	expect( 1 );
	$("#button").button({
		text: false,
		icons: {
			primary: "iconclass"
		}
	});
	ok( $("#button").is(".ui-button-icon-only:not(.ui-button-text):has(span.ui-icon.iconclass)") );

	$("#button").button("destroy");
});

test("label, default", function() {
	expect( 2 );
	$("#button").button();
	deepEqual( $("#button").text(), "Label" );
	deepEqual( $( "#button").button( "option", "label" ), "Label" );

	$("#button").button("destroy");
});

test("label", function() {
	expect( 2 );
	$("#button").button({
		label: "xxx"
	});
	deepEqual( $("#button").text(), "xxx" );
	deepEqual( $("#button").button( "option", "label" ), "xxx" );

	$("#button").button("destroy");
});

test("label default with input type submit", function() {
	expect( 2 );
	deepEqual( $("#submit").button().val(), "Label" );
	deepEqual( $("#submit").button( "option", "label" ), "Label" );
});

test("label with input type submit", function() {
	expect( 2 );
	var label = $("#submit").button({
		label: "xxx"
	}).val();
	deepEqual( label, "xxx" );
	deepEqual( $("#submit").button( "option", "label" ), "xxx" );
});

test("icons", function() {
	expect( 1 );
	$("#button").button({
		text: false,
		icons: {
			primary: "iconclass",
			secondary: "iconclass2"
		}
	});
	ok( $("#button").is(":has(span.ui-icon.ui-button-icon-primary.iconclass):has(span.ui-icon.ui-button-icon-secondary.iconclass2)") );

	$("#button").button("destroy");
});

test( "#5295 - button does not remove hoverstate if disabled" , function( assert ) {
	expect( 1 );
	var btn = $("#button").button();
	btn.on( "hover", function() {
		btn.button( "disable" );
	});
	btn.trigger( "mouseenter" );
	btn.trigger( "mouseleave" );
	assert.lacksClasses( btn, "ui-state-hover" );
});

} );
span>BorderLayout.NORTH); teamTablePanel.add(new JScrollPane(table), BorderLayout.CENTER); JPanel teamControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0)); teamControls.add(refreshTeams); teamControls.add(createTeam); teamControls.add(editTeam); teamControls.add(delTeam); setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN)); header = new HeaderPanel(Translation.get("gb.teams"), "users_16x16.png"); add(header, BorderLayout.NORTH); add(teamTablePanel, BorderLayout.CENTER); add(teamControls, BorderLayout.SOUTH); } @Override public void requestFocus() { filterTextfield.requestFocus(); } @Override public Insets getInsets() { return Utils.INSETS; } protected abstract void updateUsersTable(); protected void updateTable(boolean pack) { tableModel.list.clear(); tableModel.list.addAll(gitblit.getTeams()); tableModel.fireTableDataChanged(); header.setText(Translation.get("gb.teams") + " (" + gitblit.getTeams().size() + ")"); if (pack) { Utils.packColumns(table, Utils.MARGIN); } } private void filterTeams(final String fragment) { if (StringUtils.isEmpty(fragment)) { table.setRowSorter(defaultSorter); return; } RowFilter<TeamsTableModel, Object> containsFilter = new RowFilter<TeamsTableModel, Object>() { @Override public boolean include(Entry<? extends TeamsTableModel, ? extends Object> entry) { for (int i = entry.getValueCount() - 1; i >= 0; i--) { if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) { return true; } } return false; } }; TableRowSorter<TeamsTableModel> sorter = new TableRowSorter<TeamsTableModel>(tableModel); sorter.setRowFilter(containsFilter); table.setRowSorter(sorter); } private List<TeamModel> getSelectedTeams() { List<TeamModel> teams = new ArrayList<TeamModel>(); for (int viewRow : table.getSelectedRows()) { int modelRow = table.convertRowIndexToModel(viewRow); TeamModel model = tableModel.list.get(modelRow); teams.add(model); } return teams; } protected void refreshTeams() { GitblitWorker worker = new GitblitWorker(TeamsPanel.this, RpcRequest.LIST_TEAMS) { @Override protected Boolean doRequest() throws IOException { gitblit.refreshTeams(); return true; } @Override protected void onSuccess() { updateTable(false); } }; worker.execute(); } /** * Displays the create team dialog and fires a SwingWorker to update the * server, if appropriate. * */ protected void createTeam() { EditTeamDialog dialog = new EditTeamDialog(gitblit.getProtocolVersion(), gitblit.getSettings()); dialog.setLocationRelativeTo(TeamsPanel.this); dialog.setTeams(gitblit.getTeams()); dialog.setRepositories(gitblit.getRepositories(), null); dialog.setUsers(gitblit.getUsernames(), null); dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null), gitblit.getPreReceiveScriptsInherited(null), null); dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null), gitblit.getPostReceiveScriptsInherited(null), null); dialog.setVisible(true); final TeamModel newTeam = dialog.getTeam(); if (newTeam == null) { return; } GitblitWorker worker = new GitblitWorker(this, RpcRequest.CREATE_TEAM) { @Override protected Boolean doRequest() throws IOException { boolean success = gitblit.createTeam(newTeam); if (success) { gitblit.refreshTeams(); gitblit.refreshUsers(); } return success; } @Override protected void onSuccess() { updateTable(false); updateUsersTable(); } @Override protected void onFailure() { showFailure("Failed to execute request \"{0}\" for team \"{1}\".", getRequestType(), newTeam.name); } }; worker.execute(); } /** * Displays the edit team dialog and fires a SwingWorker to update the * server, if appropriate. * * @param user */ protected void editTeam(final TeamModel team) { EditTeamDialog dialog = new EditTeamDialog(gitblit.getProtocolVersion(), team, gitblit.getSettings()); dialog.setLocationRelativeTo(TeamsPanel.this); dialog.setTeams(gitblit.getTeams()); dialog.setRepositories(gitblit.getRepositories(), team.getRepositoryPermissions()); dialog.setUsers(gitblit.getUsernames(), team.users == null ? null : new ArrayList<String>( team.users)); dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null), gitblit.getPreReceiveScriptsInherited(null), team.preReceiveScripts); dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null), gitblit.getPostReceiveScriptsInherited(null), team.postReceiveScripts); dialog.setVisible(true); final TeamModel revisedTeam = dialog.getTeam(); if (revisedTeam == null) { return; } GitblitWorker worker = new GitblitWorker(this, RpcRequest.EDIT_TEAM) { @Override protected Boolean doRequest() throws IOException { boolean success = gitblit.updateTeam(team.name, revisedTeam); if (success) { gitblit.refreshTeams(); gitblit.refreshUsers(); } return success; } @Override protected void onSuccess() { updateTable(false); updateUsersTable(); } @Override protected void onFailure() { showFailure("Failed to execute request \"{0}\" for team \"{1}\".", getRequestType(), team.name); } }; worker.execute(); } protected void deleteTeams(final List<TeamModel> teams) { if (teams == null || teams.size() == 0) { return; } StringBuilder message = new StringBuilder("Delete the following teams?\n\n"); for (TeamModel team : teams) { message.append(team.name).append("\n"); } int result = JOptionPane.showConfirmDialog(TeamsPanel.this, message.toString(), "Delete Teams?", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { GitblitWorker worker = new GitblitWorker(this, RpcRequest.DELETE_TEAM) { @Override protected Boolean doRequest() throws IOException { boolean success = true; for (TeamModel team : teams) { success &= gitblit.deleteTeam(team); } if (success) { gitblit.refreshTeams(); gitblit.refreshUsers(); } return success; } @Override protected void onSuccess() { updateTable(false); updateUsersTable(); } @Override protected void onFailure() { showFailure("Failed to delete specified teams!"); } }; worker.execute(); } } }