當前位置: 首頁>>代碼示例>>Java>>正文


Java ScrollPanel.addStyleName方法代碼示例

本文整理匯總了Java中com.google.gwt.user.client.ui.ScrollPanel.addStyleName方法的典型用法代碼示例。如果您正苦於以下問題:Java ScrollPanel.addStyleName方法的具體用法?Java ScrollPanel.addStyleName怎麽用?Java ScrollPanel.addStyleName使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.google.gwt.user.client.ui.ScrollPanel的用法示例。


在下文中一共展示了ScrollPanel.addStyleName方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: buildPropertiesPanel

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
private Panel buildPropertiesPanel() {

		// Team panel.
		final ScrollPanel scrollTeamPanel = new ScrollPanel();
		scrollTeamPanel.addStyleName(CSS_SCROLL);
		scrollTeamPanel.add(buildTeamPanel());

		// Main panel.
		final HorizontalPanel panel = new HorizontalPanel();
		panel.addStyleName(CSS_PROPS);

		panel.add(buildVersionPanel());
		panel.add(scrollTeamPanel);

		return panel;

	}
 
開發者ID:sigmah-dev,項目名稱:sigmah,代碼行數:18,代碼來源:CreditsView.java

示例2: addRow

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public int addRow(Widget header, Widget... widgets) {
	if (header.getElement().getId() == null || header.getElement().getId().isEmpty())
		header.getElement().setId(DOM.createUniqueId());
	P head = new P(DOM.createSpan(), "header-cell");
	head.add(header);
	add(head);
	for (Widget widget: widgets) {
		P body = new P(DOM.createSpan(), "content-cell");
		add(body);
		if (widget instanceof UniTimeTable) {
			ScrollPanel scroll = new ScrollPanel(widget);
			scroll.addStyleName("scroll");
			body.add(scroll);
		} else {
			body.add(widget);
		}
	}
	if (widgets.length > 0) {
		if (widgets[0] instanceof UniTimeWidget)
			Roles.getTextboxRole().setAriaLabelledbyProperty(((UniTimeWidget)widgets[0]).getWidget().getElement(), Id.of(header.getElement()));
		else
			Roles.getTextboxRole().setAriaLabelledbyProperty(widgets[0].getElement(), Id.of(header.getElement()));			
	}
	return getWidgetCount() - widgets.length;
}
 
開發者ID:Jenner4S,項目名稱:unitimes,代碼行數:26,代碼來源:FlowForm.java

示例3: addRow

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public int addRow(Widget header, Widget widget, int colSpan) {
	header.addStyleName("label-cell");
	int row = getRowCount();
	setWidget(row, 0, header);
	getCellFormatter().setStyleName(row, 0, "label-td");
	if (widget instanceof HasMobileScroll) {
		ScrollPanel scroll = new ScrollPanel(widget);
		scroll.addStyleName("table-cell");
		setWidget(row, 1, scroll);
		getCellFormatter().setStyleName(row, 1, "table-td");
	} else {
		widget.addStyleName("widget-cell");
		setWidget(row, 1, widget);
		getCellFormatter().setStyleName(row, 1, "widget-td");
	}
	if (colSpan != 1)
		getFlexCellFormatter().setColSpan(row, 1, colSpan);
	if (header.getElement().getId() == null || header.getElement().getId().isEmpty())
		header.getElement().setId(DOM.createUniqueId());
	if (widget instanceof UniTimeWidget)
		Roles.getTextboxRole().setAriaLabelledbyProperty(((UniTimeWidget)widget).getWidget().getElement(), Id.of(header.getElement()));
	else
		Roles.getTextboxRole().setAriaLabelledbyProperty(widget.getElement(), Id.of(header.getElement()));
	return row;
}
 
開發者ID:Jenner4S,項目名稱:unitimes,代碼行數:26,代碼來源:SimpleForm.java

示例4: setCourseDetails

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
@Override
public void setCourseDetails(CourseFinderCourseDetails... details) {
	iDetails = details;
	int tabIndex = 0;
	for (CourseFinderCourseDetails detail: iDetails) {
		ScrollPanel panel = new ScrollPanel(detail.asWidget());
		panel.setStyleName("unitime-ScrollPanel-inner");
		panel.addStyleName("course-info");
		iCourseDetailsTabBar.addTab(detail.getName(), true);
		Character ch = UniTimeHeaderPanel.guessAccessKey(detail.getName());
		if (ch != null)
			iTabAccessKeys.put(ch, tabIndex);
		tabIndex++;
	}
	selectLastTab();
}
 
開發者ID:Jenner4S,項目名稱:unitimes,代碼行數:17,代碼來源:CourseFinderCourses.java

示例5: HistorySearch

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
/**
 * HistorySearch
 */
public HistorySearch() {
	stackPanel = new StackLayoutPanel(Unit.PX);
	searchSaved = new SearchSaved();
	userNews = new UserNews();
	scrollSearchSavedPanel = new ScrollPanel();
	scrollUserNewsSavedPanel = new ScrollPanel();

	scrollSearchSavedPanel.addStyleName("okm-PanelSelected");
	scrollUserNewsSavedPanel.addStyleName("okm-PanelSelected");

	scrollSearchSavedPanel.add(searchSaved);
	scrollSearchSavedPanel.setSize("100%", "100%");

	scrollUserNewsSavedPanel.add(userNews);
	scrollUserNewsSavedPanel.setSize("100%", "100%");

	stackPanel.add(scrollSearchSavedPanel, Util.createHeaderHTML("img/icon/stackpanel/find.gif", Main.i18n("leftpanel.label.stored.search")), true, 22);
	stackPanel.add(scrollUserNewsSavedPanel, Util.createHeaderHTML("img/icon/news.gif", Main.i18n("leftpanel.label.user.search")), true, 22);

	stackPanel.showWidget(0);
	stackPanel.setStyleName("okm-StackPanel");
	stackPanel.addStyleName("okm-DisableSelect");
	initWidget(stackPanel);
}
 
開發者ID:openkm,項目名稱:document-management-system,代碼行數:28,代碼來源:HistorySearch.java

示例6: NotificationWindow

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public NotificationWindow(String title, String message) {
	setClosable(true);
	setResizable(false);
	setModal(false);
	setHeadingText(title);
	setHeight(HEIGHT);
	setWidth(WIDTH);
	setDraggable(false);

	getHeader().setText(title);
	this.message = message;

	HTML html = new HTML(message);
	html.addStyleName("notification");
	html.addStyleName("whiteBackground");
	ScrollPanel scrollPanel = new ScrollPanel(html);
	scrollPanel.addStyleName("whiteBackground");

	setWidget(scrollPanel);
}
 
開發者ID:Stratehm,項目名稱:multipool-stats-backend,代碼行數:21,代碼來源:Notification.java

示例7: populateDialog

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
@Override
protected void populateDialog() {
	//ADD THE MAIN DATA FIELDS
	if( isTopicView ) {
		addNewGrid( 2, 2, false, "", true);
	} else {
		addNewGrid( 1, 1, false, "", true);
	}
	
	//Make a wrapper scroll panel around the message because it can be too long
	VerticalPanel centeringPanel = new VerticalPanel();
	centeringPanel.addStyleName( CommonResourcesContainer.MAXIMUM_WIDTH_FOR_MESSAGE_VIEW_STYLE );
	centeringPanel.setHeight("100%");
	centeringPanel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_CENTER );
	centeringPanel.setVerticalAlignment( HasVerticalAlignment.ALIGN_MIDDLE );
	centeringPanel.add( forumMessageUI );
	
	ScrollPanel wrapperPanel = new ScrollPanel();
	wrapperPanel.setStyleName( CommonResourcesContainer.SCROLLABLE_SIMPLE_PANEL );
	//Force the maximum viewable area for the displayed forum message
	wrapperPanel.addStyleName( CommonResourcesContainer.MAXIMUM_SIZE_FOR_MESSAGE_VIEW_STYLE );
	wrapperPanel.add( centeringPanel );
	
	if( isTopicView ) {
		addToGrid( this.getCurrentGridIndex(), FIRST_COLUMN_INDEX, 2, wrapperPanel, false, false );
		
		//Add the grid action buttons
		this.addGridActionElements(true, true);
	} else {
		addToGrid( FIRST_COLUMN_INDEX, wrapperPanel, false, false );
	}
}
 
開發者ID:ivan-zapreev,項目名稱:x-cure-chat,代碼行數:33,代碼來源:ViewMessageDialogUI.java

示例8: UserProfileFilesView

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
/**
 * The basic constructor
 */
public UserProfileFilesView( final DialogBox parentDialog, final UserData userData ) {
	//Store the reference to the parent dialog
	this.parentDialog = parentDialog;
	
	//Set the local scroll panel
	ScrollPanel scrollPanel = new ScrollPanel();
	scrollPanel.addStyleName( CommonResourcesContainer.FILE_TUMBNAILS_PANEL_STYLE );
	//Set up the images panel
	thumbnailsPanel = new HorizontalPanel();
	thumbnailsPanel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_CENTER );
	thumbnailsPanel.setVerticalAlignment( HasVerticalAlignment.ALIGN_MIDDLE );
	scrollPanel.add( thumbnailsPanel );
	
	//Instantiate the buttons
	previousButton = new LeftRightButtons( CommonResourcesContainer.NAV_LEFT_IMG_BUTTON, false , false );
	nextButton 	   = new LeftRightButtons( CommonResourcesContainer.NAV_RIGHT_IMG_BUTTON, false , false );
	
	//Set up the main panel
	mainHorPanel = new HorizontalPanel();
	mainHorPanel.setVerticalAlignment( HasVerticalAlignment.ALIGN_MIDDLE );

	mainHorPanel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_CENTER );
	mainHorPanel.add( previousButton );
	mainHorPanel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_LEFT );
	mainHorPanel.add( scrollPanel );
	mainHorPanel.setHorizontalAlignment( HasHorizontalAlignment.ALIGN_CENTER );
	mainHorPanel.add( nextButton );
	
	//Set the user profile files
	setUserProfile( userData );
	
	//Initialize the widget
	initWidget( mainHorPanel );
}
 
開發者ID:ivan-zapreev,項目名稱:x-cure-chat,代碼行數:38,代碼來源:UserProfileFilesView.java

示例9: initInfoPanel

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
/**
 * Init the info panel.
 */
private void initInfoPanel() {

	infoPopupPanel.addStyleName(ApplicationResource.INSTANCE.css().infoPopupPanel());

	HTMLPanel infoPopupPanelWrapper = new HTMLPanel("");

	closeInfoPopupPanelButton.addStyleName(ApplicationResource.INSTANCE.css().closePopupPanelButton());
	closeInfoPopupPanelButton.addClickHandler(new ClickHandler() {
		@Override
		public void onClick(ClickEvent event) {
			infoPopupPanel.hide();
			ApplicationService.getInstance().setTooltipShowingAllowed(true);
		}
	});

	HTMLPanel closeInfoButtonContainer = new HTMLPanel("");
	closeInfoButtonContainer.addStyleName(ApplicationResource.INSTANCE.css().popupPanelHeader());
	Label infoTitle = new Label(msg.infoPanelTitle());
	closeInfoButtonContainer.add(infoTitle);
	closeInfoButtonContainer.add(closeInfoPopupPanelButton);
	infoPopupPanelWrapper.add(closeInfoButtonContainer);

	infoPopupPanelContent = new HTMLPanel("");
	infoPopupPanelContent.addStyleName(ApplicationResource.INSTANCE.css().infoPopupPanelContent());

	ScrollPanel infoPopupPanelScroll = new ScrollPanel();
	infoPopupPanelScroll.addStyleName(ApplicationResource.INSTANCE.css().infoPopupPanelScroll());
	infoPopupPanelScroll.add(infoPopupPanelContent);

	infoPopupPanelWrapper.add(infoPopupPanelScroll);

	infoPopupPanel.add(infoPopupPanelWrapper);

	infoPopupPanel.hide();
}
 
開發者ID:geomajas,項目名稱:geomajas-gwt2-quickstart-application,代碼行數:39,代碼來源:InfoPanel.java

示例10: PopupMenu

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public PopupMenu() {
    super();
    setAutoHideEnabled(true);
    ScrollPanel scrollPanel = new ScrollPanel(menuContentPanel);
    scrollPanel.addStyleName("popup-menu");
    setWidget(scrollPanel);
}
 
開發者ID:rkfg,項目名稱:gwtutil,代碼行數:8,代碼來源:PopupMenu.java

示例11: createWidget

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
@Override
protected ScrollPanel createWidget() {
  ScrollPanel panel = new ScrollPanel(new GwtTreeImpl());
  panel.addStyleName("ui-scroll-panel-marker");
  GwtUIUtil.fill(panel);
  return panel;
}
 
開發者ID:consulo,項目名稱:consulo,代碼行數:8,代碼來源:GwtTreeImplConnector.java

示例12: AriaSuggestBox

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public AriaSuggestBox(AriaTextBox box, SuggestOracle oracle) {
	iOracle = oracle;
	iText = box;
	iText.setStyleName("gwt-SuggestBox");
	initWidget(iText);
	
	addEventsToTextBox();
	
	iSuggestionMenu = new SuggestionMenu();
	
	iPopupScroll = new ScrollPanel(iSuggestionMenu);
	iPopupScroll.addStyleName("scroll");
	
	iSuggestionPopup = new PopupPanel(true, false);
	iSuggestionPopup.setPreviewingAllNativeEvents(true);
	iSuggestionPopup.setStyleName("unitime-SuggestBoxPopup");
	iSuggestionPopup.setWidget(iPopupScroll);
	iSuggestionPopup.addAutoHidePartner(getElement());
	
	iSuggestionCallback = new SuggestionCallback() {
		@Override
		public void onSuggestionSelected(Suggestion suggestion) {
			if (!suggestion.getReplacementString().isEmpty()) {
				setStatus(ARIA.suggestionSelected(status(suggestion)));
			}
			iCurrentText = suggestion.getReplacementString();
			setText(suggestion.getReplacementString());
			hideSuggestionList();
			fireSuggestionEvent(suggestion);
		}
	};
	
	iOracleCallback = new SuggestOracle.Callback() {
		@Override
		public void onSuggestionsReady(Request request, Response response) {
			if (response.getSuggestions() == null || response.getSuggestions().isEmpty()) {
				if (iSuggestionPopup.isShowing()) iSuggestionPopup.hide();
			} else {
				iSuggestionMenu.clearItems();
				SuggestOracle.Suggestion first = null;
				for (SuggestOracle.Suggestion suggestion: response.getSuggestions()) {
					iSuggestionMenu.addItem(new SuggestionMenuItem(suggestion));
					if (first == null) first = suggestion;
				}
				iSuggestionMenu.selectItem(0);
				ToolBox.setMinWidth(iSuggestionMenu.getElement().getStyle(), (iText.getElement().getClientWidth() - 4) + "px");
				iSuggestionPopup.showRelativeTo(iText);
				iSuggestionMenu.scrollToView();
				if (response.getSuggestions().size() == 1) {
					if (first.getReplacementString().isEmpty())
						setStatus(status(first));
					else
						setStatus(ARIA.showingOneSuggestion(status(first)));
				} else {
					setStatus(ARIA.showingMultipleSuggestions(response.getSuggestions().size(), request.getQuery(), status(first)));
				}
			}
		}
	};
	
	Roles.getTextboxRole().setAriaAutocompleteProperty(iText.getElement(), AutocompleteValue.NONE);
	
	iSuggestionPopup.getElement().setAttribute("id", DOM.createUniqueId());
	Roles.getTextboxRole().setAriaOwnsProperty(iText.getElement(), Id.of(iSuggestionPopup.getElement()));
}
 
開發者ID:Jenner4S,項目名稱:unitimes,代碼行數:66,代碼來源:AriaSuggestBox.java

示例13: MessageStack

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
/**
 * MessageStack
 */
public MessageStack() {
	status = new Status();
	status.setStyleName("okm-StatusPopup");

	stackPanel = new ExtendedStackPanel();
	proposedSubscriptionReceived = new ProposedSubscriptionReceivedStack();
	proposedQueryReceived = new ProposedQueryReceivedStack();
	messageReceived = new MessageReceivedStack();
	messageSent = new MessageSentStack();
	scrollProposeSubscriptionReceivedPanel = new ScrollPanel();
	scrollProposeQueryReceivedPanel = new ScrollPanel();
	scrollMessageReceivedPanel = new ScrollPanel();
	scrollMessageSentPanel = new ScrollPanel();

	scrollProposeSubscriptionReceivedPanel.addStyleName("okm-PanelSelected");
	scrollProposeQueryReceivedPanel.addStyleName("okm-PanelSelected");
	scrollMessageReceivedPanel.addStyleName("okm-PanelSelected");
	scrollMessageSentPanel.addStyleName("okm-PanelSelected");

	scrollProposeSubscriptionReceivedPanel.add(proposedSubscriptionReceived);
	scrollProposeQueryReceivedPanel.add(proposedQueryReceived);
	scrollMessageReceivedPanel.add(messageReceived);
	scrollMessageSentPanel.add(messageSent);
	scrollProposeSubscriptionReceivedPanel.setSize("100%", "100%");
	scrollProposeQueryReceivedPanel.setSize("100%", "100%");
	scrollMessageSentPanel.setSize("100%", "100%");
	// Mandatory can not be a resource bundle due IE problem !
	stackPanel.add(scrollProposeSubscriptionReceivedPanel, UtilComunicator.createHeaderHTML("img/icon/actions/propose_subscription.png",
			GeneralComunicator.i18nExtension("messaging.label.propose")), true, UIDesktopConstants.STACK_HEIGHT);
	stackPanel.add(scrollProposeQueryReceivedPanel, UtilComunicator.createHeaderHTML("img/icon/actions/share_query.gif",
			GeneralComunicator.i18nExtension("messaging.label.share.query")), true, UIDesktopConstants.STACK_HEIGHT);
	stackPanel.add(scrollMessageReceivedPanel, UtilComunicator.createHeaderHTML("img/icon/actions/message_received.png",
			GeneralComunicator.i18nExtension("messaging.label.message.received")), true, UIDesktopConstants.STACK_HEIGHT);
	stackPanel.add(scrollMessageSentPanel, UtilComunicator.createHeaderHTML("img/icon/actions/message.png",
			GeneralComunicator.i18nExtension("messaging.label.message.sent")), true, UIDesktopConstants.STACK_HEIGHT);

	stackPanel.showWidget(0);
	stackPanel.setStartUpFinished();

	stackPanel.setStyleName("okm-StackPanel");
	stackPanel.addStyleName("okm-DisableSelect");
	initWidget(stackPanel);
}
 
開發者ID:openkm,項目名稱:document-management-system,代碼行數:47,代碼來源:MessageStack.java

示例14: LogWindow

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
public LogWindow() {
	html = new ScrollPanel();
	html.addStyleName("console-font");
	add(container);
	container.setCenterWidget(html);
	frame.setHeight("140px");
	frame.getElement().setAttribute("style", "border-width:0px");
	BorderLayoutData layoutData=new BorderLayoutData(140);
	container.setSouthWidget(frame, layoutData);
	setSize("700", "500");
	setHeadingText("日誌");
	setMaximizable(true);
	timer = new Timer() {
		public void run() {
			RPCS.getJobService().getJobHistory(id,
					new AbstractAsyncCallback<JobHistoryModel>() {
						@Override
						public void onSuccess(JobHistoryModel result) {
							String lastJobId=null;
							if (!result.getLog().equals(lastContent)) {
								String[] lines=result.getLog().split("\n");
								StringBuffer sb=new StringBuffer();
								for(String line:lines){
									String job=ToolUtil.extractJobId(line);
									if(job!=null){
										lastJobId=job;
										String newline=line.replaceAll(job, "<a target='_blank' href='jobdetail.jsp?type=2&jobid="+job+">"+job+"</a>");
										sb.append(newline+"<br/>");
									}else{
										sb.append(line+"<br/>");
									}
								}
								boolean needScroll=(html.getMaximumVerticalScrollPosition()==html.getVerticalScrollPosition());
								html.getElement().setInnerHTML(sb.toString());
								if(needScroll){
									html.scrollToBottom();
								}
								if(result.getEndTime()!=null || lastJobId==null){
									container.hide(LayoutRegion.SOUTH);
								}else if(lastJobId!=null){
									String url="jobdetail.jsp?type=1&jobId="+lastJobId+"&timestamp="+new Date().getTime();
									frame.setUrl(url);
									container.show(LayoutRegion.SOUTH);
								}
								lastContent = result.getLog();
							}
							if (result.getEndTime() != null) {
								timer.cancel();
								return;
							}
						}
					});
		}
	};
	addHideHandler(new HideHandler() {
		public void onHide(HideEvent event) {
			timer.cancel();
		}
	});
}
 
開發者ID:ctripcorp,項目名稱:dataworks-zeus,代碼行數:61,代碼來源:CardHistory.java

示例15: appendTreeNode

import com.google.gwt.user.client.ui.ScrollPanel; //導入方法依賴的package包/類
/**
 * Create a new {@link TreeNodeImpl} and append it to the end of the
 * LayoutPanel.
 *
 * @param <C> the data type of the children
 * @param nodeInfo the info about the node
 * @param value the value of the open node
 */
private <C> TreeNode appendTreeNode(final NodeInfo<C> nodeInfo, Object value) {
  // Create the list view.
  final int level = treeNodes.size();
  final BrowserCellList<C> view = createDisplay(nodeInfo, level);

  // Create a pager and wrap the components in a scrollable container. Set the
  // tabIndex to -1 so the user can tab between lists without going through
  // the scrollable.
  ScrollPanel scrollable = new ScrollPanel();
  scrollable.getElement().setTabIndex(-1);
  final Widget pager = createPager(view);
  if (pager != null) {
    FlowPanel flowPanel = new FlowPanel();
    flowPanel.add(view);
    flowPanel.add(pager);
    scrollable.setWidget(flowPanel);
  } else {
    scrollable.setWidget(view);
  }
  scrollable.setStyleName(style.cellBrowserColumn());
  if (level == 0) {
    scrollable.addStyleName(style.cellBrowserFirstColumn());
  }

  // Create a TreeNode.
  TreeNodeImpl<C> treeNode = new TreeNodeImpl<C>(nodeInfo, value, view, scrollable);
  treeNodes.add(treeNode);

  /*
   * Attach the view to the selection model and node info. Nullify the default
   * selection manager because it is provided by the node info.
   */
  view.setSelectionModel(nodeInfo.getSelectionModel(), null);
  nodeInfo.setDataDisplay(view);

  // Add the view to the LayoutPanel.
  SplitLayoutPanel splitPanel = getSplitLayoutPanel();
  splitPanel.insertLineStart(scrollable, defaultWidth, null);
  splitPanel.setWidgetMinSize(scrollable, minWidth);
  splitPanel.forceLayout();

  // Scroll to the right.
  animation.scrollToEnd();
  return treeNode;
}
 
開發者ID:consulo,項目名稱:consulo,代碼行數:54,代碼來源:CellBrowser.java


注:本文中的com.google.gwt.user.client.ui.ScrollPanel.addStyleName方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。